【问题标题】:Convert #text from getNodeName to string将 #text 从 getNodeName 转换为字符串
【发布时间】:2011-08-28 14:44:04
【问题描述】:

我正在解析一个XML文件如下:

<ROW>
<INDUSTRY_ID>1</INDUSTRY_ID>
<ID>314</ID>
</ROW>

这是我的代码:

NodeList titleList = list.getElementsByTagName("ROW");
Log.w("nodeName is ",titleList.item(0).getChildNodes().item(1).getFirstChild().getNodeName());
Log.w("nodeValue is ",titleList.item(0).getChildNodes().item(1).getFirstChild().getNodeName());

我可以成功获取到标签和标签的内容,分别是“1”和“314”;但是,我从 getNodeName() 获得了#text。 我也试过:

titleList.item(0).getChildNodes().item(1).getFirstChild().getNodeName().toString()

但我仍然收到#text。我的问题是如何获得“INDUSTRY_ID”和“ID”?

【问题讨论】:

  • @svick 语言是 Java

标签: java xml text nodename


【解决方案1】:

您已向下导航到文本节点。文本节点在技术上没有名称,只有(文本)值。你想要这个:

NodeList titleList = list.getElementsByTagName("ROW");
Log.w("nodeName is ",titleList.item(0).getChildNodes().item(1).getNodeName());
Log.w("nodeValue is ",titleList.item(0).getChildNodes().item(3).getNodeName());

但是,这是一种非常不可靠的访问元素节点和值的方法,因为它依赖于空白格式。使用 Xpath 检索所需元素的列表并访问它们各自的名称和值

XPath xp = XPathFactory.newInstance();
NodeList elements = (NodeList) xp.evaluate(doc, "//ROW/*", XPathConstants.NODESET); 
for(int i=0; i < elements.getLength(); ++i) {
    String name = elements.itemt(i).getNodeName();
    String value = elements.itemt(i).getTextContent();
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-12
    • 2019-10-10
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多