Xml.nodeValue导致"错误的节点类型"错误

Gul*_*van 3 xml haxe exception xmlnode neko

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

}
Run Code Online (Sandbox Code Playgroud)

输出:

Main.hx:23:6

Main.hx:27:tount

Main.hx:28:0

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

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

PS我的配置是:Haxe + OpenFL瞄准Neko.

Gam*_*a11 5

elementsNamed()返回类型的节点XmlType.Element,以及显式状态的文档nodeValue:

返回节点值.仅在Xml节点不是Element或Document时有效.

因此,nodeValue将适用于所有其他可能的XmlType值.在您的情况下,您要检索的值存储在XmlType.PCData节点中,您可以使用firstChild()以下命令访问它:

for (x in xml.elementsNamed("count"))
{
    trace(x.firstChild().nodeType); // 1 - XmlType.PCData
    trace(x.firstChild().nodeValue); // 6
}
Run Code Online (Sandbox Code Playgroud)

完整的结构<count>6</count>看起来像这样:

[XmlType.Document] -> [XmlType.Element <count>] -> [XmlType.PCData 6]
Run Code Online (Sandbox Code Playgroud)