我想解析这个 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/