Java XML getElementsByTagName()函数

时间:2011-04-10 20:23:15

标签: java xml getelementsbytagname

假设我有这个XML文件:

<attributes>
  <units>
    <civilians>
      <unit>
        <name>Settler</name>
        <stats>
          <attack>26</attack>
          <defence>7</defence>
        </stats>
        <costs>
          <lumber/>
          <iron/>
        </costs>
      </unit>
      <unit>
        <name>Infantry</name>
        <stats>
          <attack>33</attack>
          <defence>7</defence>
        </stats>
        <costs>
          <lumber/>
          <iron/>
        </costs>
      </unit>
    </civilians>
  </units>
</attributes>

节点属性上的getElementsByTagName(“attack”)是否返回NodeList,其中攻击元素在第一个位置包含26,而攻击元素在第二个位置包含33?

我一直在想这是事实,但似乎没有用。

如果不是这么简单;从XML文件中获取所有攻击值的好方法是什么?也许XML文件本身结构不合理?

编辑:啊。我现在得到了节点,而.getTextContent()而不是.getNodeValue()解决了我的问题。很抱歉给您带来不便。

2 个答案:

答案 0 :(得分:7)

Dom Core 2 Spec说:

  

<强>的getElementsByTagName

     

返回具有给定标记的所有后代元素的NodeList   名称,按其顺序排列   在前序遍历中遇到过   这个元素树。

Dom Core 3 Spec说:

  

<强>的getElementsByTagName

     

返回具有给定标记的所有后代元素的NodeList   名称,按文件顺序。

所以你对这个功能的期望是正确的。如果这不是你得到的,那么你的代码或你正在使用的库中就会出现错误。

答案 1 :(得分:-2)

我从来没有使用过Java中的XML,但你肯定可以循环使用这些元素并检查每个元素是否有攻击密钥。对不起,如果这不是你想要的, 这正是我要做的,因为我不了解Java中的XML类。希望它有所帮助。