Skip to content

Latest commit

 

History

History
102 lines (67 loc) · 2.16 KB

10.9.Xml.md

File metadata and controls

102 lines (67 loc) · 2.16 KB

10.9.Xml

Haxe 通过 haxe.XML 类内置提供对使用XML数据的支持。

10.9.1.开始使用Xml

创建一个根元素

Xml的一个根元素可以使用 Xml.createElement 方法创建。

var root = Xml.createElement('root');
trace(root); // <root />

一个根节点元素也可以通过解析一个字符串包含的 XML 数据来创建。

var root = Xml.parse('<root />').firstElement();
trace(root); // <root />

创建子元素

可以使用 addChild 方法添加子元素到根。

var child:Xml = Xml.createElement('child'); 
root.addChild(child);
trace(root); // <root><child/></root>

可以使用 set() 方法为元素添加属性。

child.set('name', 'John');
trace(root); // <root><child name="John"/></root>

访问元素和值

这段代码解析一个 XML 字符串为一个 对象结构 Xml ,然后访问对象的属性。

var xmlString = '<hello name="world!">Haxe is great!</hello>';
var xml:Xml = Xml.parse(xmlString).firstElement();

trace(xml.nodeName); // hello
trace(xml.get('name')); // world!
trace(xml.firstChild().nodeValue); // Haxe is great!

firstChild 和firstElement 之间的不同是,第二个函数返回的第一个子元素为Xml.Element 类型。

迭代 Xml 元素

我也也可以用其它方法迭代每个子节点或元素。

for (child in xml) {
  // iterate on all children.
}
for (elt in xml.elements()) {
  // iterate on all elements.
}
for (user in xml.elementsNamed("user")) {
  // iterate on all elements with a nodeName "user".
}
for (att in xml.attributes()) {
  // iterator on all attributes.
}

查看 Xml API 文档详细了解它的方法。

10.9.2.解析Xml

静态方法 Xml.parse 可以用来解析 XML 数据 并从其中获得一个 Haxe 值。

var xml = Xml.parse('<root>Haxe is great!</root>').firstElement();
trace(xml.firstChild().nodeValue);

10.9.3.编码Xml

xml.toString() 方法可以用来获取字符串的表示。

var xml = Xml.createElement('root');
xml.addChild(Xml.createElement('child1'));
xml.addChild(Xml.createElement('child2'));

trace(xml.toString()); // <root><child1/><child2/></root>