gpt4 book ai didi

java - java DOM XML 解析的不同结果

转载 作者:行者123 更新时间:2023-12-01 10:50:23 28 4
gpt4 key购买 nike

我使用 DOM 解析器来解析 XML 文件。我使用格式化的 xml 和未格式化的 xml 文件作为输入。

已格式化

<students>
<student>
<name>Vicky</name>
</student>
<student>
<name>John</name>
</student>
</students>

未格式化

<students><student><name>Vicky</name></student><student><name>John</name></student></students>

当运行下面的代码来获取子元素时,我得到了不同的结果。

public class XmlTest {
public static void main(String[] args) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
dbFactory.setNamespaceAware(true);
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new FileInputStream("testFile.xml")));
doc.getDocumentElement().normalize();
Element mainEle = doc.getDocumentElement();
NodeList nodes = mainEle.getChildNodes();
System.out.println("No.of Childs = " + nodes.getLength());
} catch (ParserConfigurationException | SAXException | IOException e) {
System.out.println("Error " + e);
}
}
}

结果是;

对于格式化 XML:5

未格式化:2

为什么相同内容的xml会有不同的结果?

最佳答案

创建格式的空白由 text() 节点组成。它们在未格式化的 XML 中丢失。

在未格式化的文档中,根目录有 1 个 student 子级。在格式化的节点中,还有 3 个 text() 节点:学生之前、学生之间和学生之后。

xsh 中验证:

open file.xml ;
for /students/node() echo name() xsh:if(self::text(), 'text', '') ;

text
student
text
student
text

关于java - java DOM XML 解析的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954539/

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