gpt4 book ai didi

java - "getDocumentElement"和 "getFirstChild"不同

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:05 24 4
gpt4 key购买 nike

我有以下 Document 对象 - Document myDoc

myDoc 通过...保存一个 XML 文件

myDoc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(file);

现在我想获取 XML 文件的根目录。有什么区别吗

Node firstChild = this.myDoc.getFirstChild() 

Node firstChild = (Node)myDoc.getDocumentElement()

在第一种方式中,firstChild 持有XML 文件的节点根,但它没有Node 的深度。然而,在第二种方式中,firstChild 将成为具有所有深度的根。

例如,我有以下 XML

<inventory>
<book num="b1">
</book>
<book num="b2">
</book>
<book num="b3">
</book>
</inventory>

file 保存它。

在第一种情况下,int count = firstChild.getChildNodes() 给出 count = 0

第二种情况将给出 count = 3

我说得对吗?

最佳答案

如果在文档根节点之前还有其他节点(例如注释节点),则使用 myDoc.getFirstChild() 获得的节点可能不是文档根。看下面的例子:

import org.w3c.dom.*;

public class ReadXML {

public static void main(String args[]) throws Exception{

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

// Document elements
Document doc = docBuilder.parse(new File(args[0]));

Node firstChild = doc.getFirstChild();
System.out.println(firstChild.getChildNodes().getLength());
System.out.println(firstChild.getNodeType());
System.out.println(firstChild.getNodeName());

Node root = doc.getDocumentElement();
System.out.println(root.getChildNodes().getLength());
System.out.println(root.getNodeType());
System.out.println(root.getNodeName());

}
}

解析以下 XML 文件时:

<?xml version="1.0"?>
<!-- Edited by XMLSpy -->
<catalog>
<product description="Cardigan Sweater" product_image="cardigan.jpg">
<catalog_item gender="Men's">
<item_number>QWZ5671</item_number>
<price>39.95</price>
<size description="Medium">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
<size description="Large">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
</catalog_item>
</product>
</catalog>

给出以下结果:

0
8
#comment
3
1
catalog

但是如果我删除评论,它会给出:

3
1
catalog
3
1
catalog

关于java - "getDocumentElement"和 "getFirstChild"不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10937872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com