Java Dom解析器报告错误的子节点数 [英] Java Dom parser reports wrong number of child nodes
本文介绍了Java Dom解析器报告错误的子节点数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下xml文件:
<?xml version =1.0encoding =UTF-8 ?>
< users>
< user id =0firstname =John/>
< / users>
然后我试图用java解析它,但getchildnodes报告错误的子节点数。 / p>
Java代码:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
文档文档= builder.parse(this.file);
document.getDocumentElement()。normalize();
元素root = document.getDocumentElement();
NodeList nodes = root.getChildNodes();
System.out.println(nodes.getLength());
结果:3
得到NPE访问节点属性,所以我猜测有什么可怕的错误。
解决方案
有三个子节点:
- 包含换行符的文本节点
- 元素节点(标记用户)
- 包含换行符的文本节点
因此,在处理子节点时,请检查元素节点。
I have the following xml file:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="0" firstname="John"/>
</users>
Then I'm trying to parse it with java, but getchildnodes reports wrong number of child nodes.
Java code:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(this.file);
document.getDocumentElement().normalize();
Element root = document.getDocumentElement();
NodeList nodes = root.getChildNodes();
System.out.println(nodes.getLength());
Result: 3
Also I'm getting NPEs for accessing the nodes attributes, so I'm guessing something's going horribly wrong.
解决方案
There are three child nodes:
- a text node containing a line break
- an element node (tagged user)
- a text node containing a line break
So when processing the child nodes, check for element nodes.
这篇关于Java Dom解析器报告错误的子节点数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文