Java XML节点长度

时间:2012-07-24 03:48:33

标签: java xml

我对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?

}

2 个答案:

答案 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)

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