gpt4 book ai didi

java - 使用 JDOM 解析 XML 文件时出错

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:46 25 4
gpt4 key购买 nike

我有这个 XML 文档:

<?xml version="1.0" encoding="utf-8"?>
<RootElement>
<Achild>
.....
</Achild>
</RootElement>

如何检查文档是否包含 Achild 元素?我试过了

final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// Use the factory to create a builder
try {
final DocumentBuilder builder = factory.newDocumentBuilder();
final Document doc = builder.parse(configFile);
final Node parentNode = doc.getDocumentElement();
final Element childElement = (Element) parentNode.getFirstChild();
if(childElement.getNodeName().equalsIgnoreCase(...

但它给了我一个错误(childElement 为空)。

最佳答案

我认为你得到了#text节点( <RootElement><Achild> 之间的节点)作为第一个子节点(这是很常见的错误),例如:

final Node parentNode = doc.getDocumentElement();
Node childElement = parentNode.getFirstChild();
System.out.println(childElement.getNodeName());

返回:

#text

使用:

final Node parentNode = doc.getDocumentElement();
NodeList childElements = parentNode.getChildNodes();
for (int i = 0; i < childElements.getLength(); ++i)
{
Node childElement = childElements.item(i);
if (childElement instanceof Element)
System.out.println(childElement.getNodeName());
}

想要的结果:

Achild

编辑:

还有第二种方法使用 DocumentBuilderFactory.setIgnoringElementContentWhitespace 方法:

factory.setIgnoringElementContentWhitespace(true);

但是这仅在验证模式下有效,因此您需要在 XML 文档中提供 DTD:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE RootElement [
<!ELEMENT RootElement (Achild)+>
<!ELEMENT Achild (#PCDATA)>
]>
<RootElement>
<Achild>some text</Achild>
</RootElement>

并设置factory.setValidating(true) 。完整示例:

final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(true);
factory.setIgnoringElementContentWhitespace(true);
final DocumentBuilder builder = factory.newDocumentBuilder();
final Document doc = builder.parse("input.xml");

final Node rootNode = doc.getDocumentElement();
final Element childElement = (Element) rootNode.getFirstChild();

System.out.println(childElement.getNodeName());

原始代码想要的结果:

Achild

关于java - 使用 JDOM 解析 XML 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6650448/

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