3
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);
        }
    }

}

输出:

主要.hx:23:6

Main.hx:27: 计数

Main.hx:28:0

Main.hx:34:错误的节点类型,意外的 0

我不能完全理解nodeValue财产的运作原理。因此,我无法解决我的问题。这里有什么帮助吗?

PS 我的配置是:Haxe + OpenFL 针对 Neko。

4

1 回答 1

5

elementsNamed()返回 type 的节点XmlType.Element,以及明确声明的文档: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]
于 2017-11-04T09:21:46.947 回答