Получить элементы по имени тега из узла в документе Android (XML)? - PullRequest
6 голосов
/ 17 июня 2011

У меня есть такой XML-код:

  <!--...-->
  <Cell X="4" Y="2" CellType="Magnet">
    <Direction>180</Direction>
    <SwitchOn>true</SwitchOn>
    <Color>-65536</Color>
  </Cell>
  <!--...-->

Их много Cell elements, и я могу получить ячейки ячеек по GetElementsByTagName.Однако я понимаю, что у класса Node нет GetElementsByTagName метода!Как я могу получить Direction узел из этого узла ячейки, не просматривая список ChildNodes?Могу ли я получить NodeList по имени тега, как у Document класса?

Спасибо.

1 Ответ

14 голосов
/ 17 июня 2011

Вы можете снова разыграть предмет NodeList с помощью Element, а затем использовать getElementsByTagName(); из класса Element.Лучший подход - сделать Cell Object в вашем проекте вместе с такими полями, как Direction, Switch, Color.Затем получите ваши данные примерно так:

String direction [];
NodeList cell = document.getElementsByTagName("Cell");
int length = cell.getLength();
direction = new String [length];
for (int i = 0; i < length; i++)
{
    Element element = (Element) cell.item(i);
    NodeList direction = element.getElementsByTagName("Direction");

    Element line = (Element) direction.item(0);

    direction [i] = getCharacterDataFromElement(line);

    // remaining elements e.g Switch , Color if needed
}

Где ваш getCharacterDataFromElement() будет следующим.

public static String getCharacterDataFromElement(Element e)
{
    Node child = e.getFirstChild();
    if (child instanceof CharacterData)
    {
        CharacterData cd = (CharacterData) child;
        return cd.getData();
    }
    return "";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...