java - 使用 DOM 解析 Java 中的 xml 文件

标签 java xml dom xml-parsing

我想解析这个 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="descripciones">
        <item>one</item>
        <item>two</item>
    </string-array>
</resources>

原始文件是一个更大的数组。 这是我的代码:

builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new FileInputStream("descripciones.xml"));
Element rootElement = document.getDocumentElement();
NodeList nl = rootElement.getElementsByTagName("string-array");

Element nl1 =(Element) nl.item(0);
NodeList nl2=nl1.getChildNodes();

for(int i=0; i<nl2.getLength();i++){
    String text=nl2.item(i).getTextContent();
    System.out.println(i+text);
}

问题是当我打印结果时,我得到的每一行都是一个空项目:

1 one
2
3 two
4

有办法解决吗?有没有更好的方法来提取标签之间的数据?

最佳答案

您正在处理string-array的所有子节点,包括item节点之前和之后的文本节点。尝试一下

int pos = 0;
for(int i=0; i<nl2.getLength();i++){
    Node n = nl2.item(i);
    if (n.getNodeType() == Node.ELEMENT_NODE)
    {
        pos++;
        String text=n.getTextContent();
        System.out.println(pos + text);
    }
}

这将跳过string-array的非Element子代。

关于java - 使用 DOM 解析 Java 中的 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12485899/

相关文章:

java - 实现 Java fm radio

java - 使用 nextLine() 后无法创建测试条件

java - 如何将字符从 Oracle 编码为 XML?

c# - 使用 XmlDocument 读取 GPX 文件

javascript - onchange 事件不会在 MSIE 中冒泡。我在哪里可以找到列出所有此类事件的图表

java - Java 中的元素间距

java - spring/security 中的自定义 session 超时

php - 通过 HTML 表单编辑 XML (PHP)

jquery - 防止单选按钮检查并显示警报

javascript - 隐藏与破坏 HTML DOM 元素的处理成本