# @azz/elementtree 中文文档

规范地址：https://npmcn.com/package/%40azz/elementtree/

版本：0\.1\.6
npm 元数据更新时间：2022-06-12T15:00:30.065Z
中文译文更新时间：2026-11-07T14:15:16.687Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40azz/elementtree
原文对照：https://npmcn.com/package/%40azz/elementtree/?lang=original
项目主页：https://github.com/azz/node-elementtree
源码仓库：https://github.com/azz/node-elementtree

## 关键信息（来自 npm 元数据）

- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>= 0\.4\.0
- 运行依赖：1 个
- 首次发布：2017-04-29T14:40:06.893Z
- 最新版本发布：2017-04-29T14:40:06.893Z
- 近 30 天下载量：24497（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 0 个）

## 中文简介

基于 Python 元素Tree 的 XML 序列化和解析模块.

## 安装

```sh
npm install @azz/elementtree
```

也可以使用：`pnpm add @azz/elementtree`、`yarn add @azz/elementtree`、`bun add @azz/elementtree`

## README

# 节点元素树

节点 - elementtree是一个 [节点.js](http://nodejs.org/) 基于 XML 解析器和序列器 [Python 元素 Tree v1.3](http://effbot.org/zone/element-index.htm) 模块.

# 安装

```
$ npm install @azz/elementtree
```

# 使用图书馆

关于用法,参考了 Python ElementTree 库文档 - [http://effbot.org/zone/element-index.htm#usage 页面存档备份,存于互联网档案馆](http://effbot.org/zone/element-index.htm#usage)。 。 。 .

支持的 XPath 表达式 `find`, (中文(简体) ), `findall` 财务报告和审定财务报表 `findtext` 方法列表于 [http://effbot.org/zone/element-xpath.htm (中文(简体) )](http://effbot.org/zone/element-xpath.htm)。 。 。 .

# 例 1 - 创建 XML 文档

此示例显示如何构建一个可以发布到 Atom Hopper (英语). Atom Hopper在内部被用作来自所有产品的桥梁 以收集收入的方式, MaaS和其他产品发送类似 每次用户对资源执行动作时都会发生事件 (如创建,更新或删除). 以下是利用API的例子: 创建新的 XML 文档.

```javascript
var et = require('elementtree');
var XML = et.XML;
var ElementTree = et.ElementTree;
var element = et.Element;
var subElement = et.SubElement;

var date, root, tenantId, serviceName, eventType, usageId, dataCenter, region,
checks, resourceId, category, startTime, resourceName, etree, xml;

date = new Date();

root = element('entry');
root.set('xmlns', 'http://www.w3.org/2005/Atom');

tenantId = subElement(root, 'TenantId');
tenantId.text = '12345';

serviceName = subElement(root, 'ServiceName');
serviceName.text = 'MaaS';

resourceId = subElement(root, 'ResourceID');
resourceId.text = 'enAAAA';

usageId = subElement(root, 'UsageID');
usageId.text = '550e8400-e29b-41d4-a716-446655440000';

eventType = subElement(root, 'EventType');
eventType.text = 'create';

category = subElement(root, 'category');
category.set('term', 'monitoring.entity.create');

dataCenter = subElement(root, 'DataCenter');
dataCenter.text = 'global';

region = subElement(root, 'Region');
region.text = 'global';

startTime = subElement(root, 'StartTime');
startTime.text = date;

resourceName = subElement(root, 'ResourceName');
resourceName.text = 'entity';

etree = new ElementTree(root);
xml = etree.write({'xml_declaration': false});
console.log(xml);
```

如所见 二相等. (原始内容存档于2018-03-21). Element and et. 子元素是工厂方法 返回新的元素和子元素类. 当创建新元素(tag)时,可以使用设定方法来设置属性. 要设置标签值,请为.text属性指定一个值.

这个示例将输出一个这样的文档:

```xml
<entry xmlns="http://www.w3.org/2005/Atom">
  <TenantId>12345</TenantId>
  <ServiceName>MaaS</ServiceName>
  <ResourceID>enAAAA</ResourceID>
  <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID>
  <EventType>create</EventType>
  <category term="monitoring.entity.create"/>
  <DataCenter>global</DataCenter>
  <Region>global</Region>
  <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime>
  <ResourceName>entity</ResourceName>
</entry>
```

# 例2 - 解析 An XML 文档

此示例显示如何解析 XML 文档并使用简单的 XPath 选择器 . 为了演示目的,我们将使用位于 [https://gist.github.com/2554343 (英语)](https://gist.github.com/2554343)。 。 。 .

在幕后,节点-elementtree使用艾萨克的萨克斯库来解析XML, 图书馆有一个“parsers”的概念 为不同的解析器添加支持.

```javascript
var fs = require('fs');

var et = require('elementtree');

var XML = et.XML;
var ElementTree = et.ElementTree;
var element = et.Element;
var subElement = et.SubElement;

var data, etree;

data = fs.readFileSync('document.xml').toString();
etree = et.parse(data);

console.log(etree.findall('./entry/TenantId').length); // 2
console.log(etree.findtext('./entry/ServiceName')); // MaaS
console.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create
console.log(etree.findall('*/category/[@term="monitoring.entity.update"]').length); // 1
```

# 建设状态

[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)

# 许可证

节点-元素树分布于 [Apache 许可证](http://www.apache.org/licenses/LICENSE-2.0.html)。 。 。 .

## 常见问题

### @azz/elementtree 是什么？

基于 Python 元素Tree 的 XML 序列化和解析模块\.

### 如何安装 @azz/elementtree？

在项目目录运行 npm install @azz/elementtree，或使用 pnpm add / yarn add / bun add。

### @azz/elementtree 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/azz\_\_elementtree 是否存在。

### @azz/elementtree 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @azz/elementtree 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>= 0\.4\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @azz/elementtree 可以商用吗？

@azz/elementtree 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @azz/elementtree 的下载量有多少？

根据 npm 官方下载统计，@azz/elementtree 在 2026/10/08 – 2026/11/06 这 30 天内被下载 24,497 次，日均约 817 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @azz/elementtree 还在维护吗？

最新版本 0\.1\.6 发布于 2017/04/29（9 年前）；至今共发布 1 个版本，其中过去 12 个月发布了 0 个；首次发布于 2017/04/29。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

