Java XML функция getElementsByTagName () - PullRequest
4 голосов
/ 11 апреля 2011

Допустим, у меня есть этот 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 («атака») к атрибутам узла NodeList с элементом атаки, содержащим 26 в первой позиции, и элементом атаки, содержащим 33 ввторая позиция?

Я думал, что это так, но, похоже, это не сработает.

Если не все так просто;Что такое хороший способ получить все значения атаки из файла XML?Может быть, сам файл XML плохо структурирован?

Редактировать: Ах.Теперь я получаю узлы, и .getTextContent (), а не .getNodeValue () решили мои проблемы.Приносим извинения за неудобства.

Ответы [ 2 ]

7 голосов
/ 11 апреля 2011

Dom Core 2 Spec говорит:

getElementsByTagName

Возвращает NodeList всех элементов-потомков с данным тегом. имя, в том порядке, в котором они находятся встречаются в обходе предзаказа это элемент дерева.

И Dom Core 3 Spec говорит:

getElementsByTagName

Возвращает NodeList всех элементов-потомков с данным тегом. имя, в порядке документа.

Таким образом, ваши ожидания относительно функции верны. Если это не то, что вы получаете, это будет ошибкой в ​​вашем коде или в используемой вами библиотеке.

0 голосов
/ 11 апреля 2011

Я никогда не работал с XML в Java, но, конечно, вы могли бы просто пройтись по элементам и проверить каждый из них на наличие ключа атаки.Извините, если это не то, что вы ищете, это то, что я бы сделал, потому что я не знаю классов XML в Java.Надеюсь, это поможет.

...