android - 从 Android (XML) 文档中的节点按标签名称获取元素?

标签 android xml xml-parsing

我有这样一个 XML:

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

有很多Cell元素,我可以通过GetElementsByTagName获取Cell Nodes。但是,我意识到 Node 类没有 GetElementsByTagName 方法!如何在不遍历 ChildNodes 列表的情况下从该单元节点获取 Direction 节点?我可以像 Document 类一样通过标签名称获取 NodeList 吗?

谢谢。

最佳答案

您可以使用 Element 再次转换 NodeList 项,然后使用 Element 类中的 getElementsByTagName(); . 最好的方法是在您的项目中创建一个 Cell Object 以及 DirectionSwitchColor 等字段。然后像这样获取您的数据。

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 "";
}

关于android - 从 Android (XML) 文档中的节点按标签名称获取元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6381076/

相关文章:

android - android :state_enabled ="false"时无法设置颜色

c# - 使用 XElement 从自定义 XML 反序列化 `Dictionary<string, Tuple<string, List<string>>>`

java - 如何获取 DOM 节点之前和之后的一些 xml

python - 动态修改XML文件中特定属性的值

android - 在 Android 中使用 DOM 解析器

ios - XML 解析数据没有从 viewController 获取到 objective-c 中的 tableViewController?

android - Adobe Flash Builder Flex 移动 Android : Avoid that user can close the app

Android Studio - 有没有办法直接从 git/svn 添加模块而不将其存储在本地

android - 无法完成 session : INSTALL_FAILED_INVALID_APK: Split lib_slice_0_apk was defined multiple times

java - 未部署单独的手机和平板电脑 XML 布局