XML-如何使用java获取子节点计数
我有一个java代码,如下所示。根据我的理解,它应该在给定的XML-如何使用java获取子节点计数,java,xml,Java,Xml,我有一个java代码,如下所示。根据我的理解,它应该在给定的test.xml文件中显示父节点的子节点数 try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.parse(new File("./
test.xml
文件中显示父节点
的子节点数
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new File("./test.xml"));
System.out.println(doc.getElementsByTagName("parent").item(0).getChildNodes().getLength());
} catch(Exception e) {
e.printStackTrace();
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<parent>
<sid>hello</sid>
</parent>
这是我的test.xml
文件
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new File("./test.xml"));
System.out.println(doc.getElementsByTagName("parent").item(0).getChildNodes().getLength());
} catch(Exception e) {
e.printStackTrace();
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<parent>
<sid>hello</sid>
</parent>
你好
在此XML中,父节点parent
的子节点数为1(即,hello
)。但上面的代码段输出为3。有人能帮我弄清楚这里发生了什么吗?我是java的新手,非常感谢你的帮助
有人能帮我弄清楚这里发生了什么吗
您的节点父节点
确实有3个子节点:
包含介于
和
与hello
包含介于
和
它被称为混合内容,是在给定元素中混合文本和元素的能力
如果您尝试使用hello
启动程序,您将获得预期的1
,因为您在标记外不再有字符
混合内容的一个很好的例子是XHTML
,您可以在其中
<p>Hello <strong>World</strong></p>
输出:
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(new File("./test.xml"));
System.out.println(document.getRootElement().getChildren().size());
1
SAXReader reader = new SAXReader();
Document document = reader.read(new File("./test.xml"));
System.out.println(document.selectNodes("/parent/*").size());
1
如果出现dom4j
:
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(new File("./test.xml"));
System.out.println(document.getRootElement().getChildren().size());
1
SAXReader reader = new SAXReader();
Document document = reader.read(new File("./test.xml"));
System.out.println(document.selectNodes("/parent/*").size());
1
输出:
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(new File("./test.xml"));
System.out.println(document.getRootElement().getChildren().size());
1
SAXReader reader = new SAXReader();
Document document = reader.read(new File("./test.xml"));
System.out.println(document.selectNodes("/parent/*").size());
1
检查每个节点的类型。并非所有子节点都是元素节点。我想你会发现只有一个子节点是Element类型的。为什么它输出3而不是1?代码段是否对所有节点(包括父节点
)进行计数?我有相同的XML文件,其相关子节点(sid)正在动态创建它们。它遵循与给定问题相同的结构,因此将有这些类型的“隐藏”文本字段。那么,我们如何获得子节点的数量(sidsid
child节点的数量)?