0

我真的对 XML DOM 树结构感到困惑。

例如我有这段 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?

}
4

2 回答 2

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>
于 2012-07-24T03:53:40.827 回答
0

您始终必须准备好在文档中的任何位置查找文本节点(在这种情况下,只包含空格)。一些解析器会丢弃空格;其他解析器将保留它,并创建这些节点。您必须检查所有节点的类型。

于 2012-07-24T03:54:09.640 回答