Java Dom解析器报告错误的子节点数 [英] Java Dom parser reports wrong number of child nodes

查看:118
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆