代码之家  ›  专栏  ›  技术社区  ›  Gulvan

Xml。nodeValue导致“坏节点类型”错误

  •  3
  • Gulvan  · 技术社区  · 7 年前
    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

    主要的hx:27:计数

    主要的hx:28:0

    主要的hx:34:节点类型错误,意外为0

    我不能完全理解 nodeValue 所有物正因为如此,我无法解决我的问题。有什么帮助吗?

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

    1 回复  |  直到 7 年前
        1
  •  5
  •   Gama11 zzapper    7 年前

    elementsNamed() 返回类型为的节点 XmlType.Element ,以及 docs for nodeValue 明确说明:

    返回节点值。仅当Xml节点 不是元素 或文件。

    所以 节点值 将适用于所有其他可能的 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]