class Main extends Sprite
{
public function new()
{
super();
try
{
var xml:Xml = Xml.parse("<count>6</count>");
trace(xml.nodeType);
for (x in xml.elementsNamed("count"))
{
trace(x.nodeName);
trace(x.nodeType);
trace(x.nodeValue);
}
}
catch (err:Dynamic)
{
trace(err);
Sys.exit(1);
}
}
}
输出:
Main.hx:23:6
Main.hx:27:count
Main.hx:28:0
Main.hx:34:节点类型错误,意外0
我无法完全理解nodeValue
财产的运作原则。因此,我无法解决我的问题。这里有什么帮助吗?
P.S。我的配置是:Haxe + OpenFL瞄准Neko。
答案 0 :(得分:5)
elementsNamed()
返回XmlType.Element
类型的节点,docs for nodeValue
明确说明:
返回节点值。仅在Xml节点不是元素或文档时才有效。
因此nodeValue
适用于所有其他可能的XmlType
值。在您的情况下,您要检索的值存储在XmlType.PCData
节点中,您可以使用firstChild()
访问它:
for (x in xml.elementsNamed("count"))
{
trace(x.firstChild().nodeType); // 1 - XmlType.PCData
trace(x.firstChild().nodeValue); // 6
}
<count>6</count>
的完整结构如下所示:
[XmlType.Document] -> [XmlType.Element <count>] -> [XmlType.PCData 6]