节点元素树
节点 - elementtree是一个 节点.js 基于 XML 解析器和序列器 Python 元素 Tree v1.3 模块.
安装
$ npm install @azz/elementtree
使用图书馆
关于用法,参考了 Python ElementTree 库文档 - http://effbot.org/zone/element-index.htm#usage 页面存档备份,存于互联网档案馆。 。 。 .
支持的 XPath 表达式 find, (中文(简体) ), findall 财务报告和审定财务报表 findtext 方法列表于 http://effbot.org/zone/element-xpath.htm (中文(简体) )。 。 。 .
例 1 - 创建 XML 文档
此示例显示如何构建一个可以发布到 Atom Hopper (英语). Atom Hopper在内部被用作来自所有产品的桥梁 以收集收入的方式, MaaS和其他产品发送类似 每次用户对资源执行动作时都会发生事件 (如创建,更新或删除). 以下是利用API的例子: 创建新的 XML 文档.
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属性指定一个值.
这个示例将输出一个这样的文档:
<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 (英语)。 。 。 .
在幕后,节点-elementtree使用艾萨克的萨克斯库来解析XML, 图书馆有一个“parsers”的概念 为不同的解析器添加支持.
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
建设状态
许可证
节点-元素树分布于 Apache 许可证。 。 。 .
