4

假设我有这个 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() 解决了我的问题。带来不便敬请谅解。

4

2 回答 2

7

Dom Core 2 规范说:

getElementsByTagName

返回具有给定标记名称的所有后代元素的 NodeList,按照在此元素树的前序遍历中遇到它们的顺序。

Dom Core 3 Spec说:

getElementsByTagName

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

所以你对函数的期望是正确的。如果这不是您得到的,那将是您的代码或您正在使用的库中的错误。

于 2011-04-10T20:37:17.143 回答
-2

我从未在 Java 中使用过 XML,但您当然可以只 for 循环遍历元素并检查每个元素的攻击密钥。?抱歉,如果这不是您要找的,这正是我要做的,因为我不了解 Java 中的 XML 类。希望它有所帮助。

于 2011-04-10T20:29:12.593 回答