我对XML DOM Tree结构感到困惑。
例如,我有这段XML
<?xml version="1.0" encoding="UTF-8"?>
<Container>
<Group>
</Group>
<Group2>
</Group2>
</Container>
Container节点不应只包含2个子节点吗?小组和小组2?
File fXmlFile = new File("Test2.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
Node firstNode = doc.getDocumentElement();
if (firstNode.getNodeName().toString().equals("Container")) {
// Process container here
Container container = new Container();
System.out.println(firstNode.getChildNodes().getLength()); // why print out 5?
}
答案 0 :(得分:1)
因为在它们之间存在TEXT类型的节点。它们是隐式节点。
<?xml version="1.0" encoding="UTF-8"?>
<Container>
<!-- TEXT -->
<Group>
</Group>
<!-- TEXT -->
<Group2>
</Group2>
<!-- TEXT -->
</Container>
您的节点Group和Group2属于ELEMENT类型。大多数情况下,遵循XML会给你数2,
<?xml version="1.0" encoding="UTF-8"?>
<Container><Group></Group><Group2></Group2></Container>
答案 1 :(得分:0)
您始终必须准备好在文档中的任何位置找到文本节点 - 在这种情况下,只包含空格。一些解析器会丢弃空格;其他解析器将保留它,并创建这些节点。您必须检查所有节点的类型。