gpt4 book ai didi

java - 处理 XML Java 中不存在的节点

转载 作者:行者123 更新时间:2023-12-02 10:13:34 24 4
gpt4 key购买 nike

我必须处理各种 MARC 格式的 XML 文件。这些文件包含不同的字段,有时字段可能会丢失。在这种特殊情况下,作者的字段不存在,应将其保存为空字符串。

在尝试访问节点的值之前如何检查节点是否存在?

如果我尝试访问不存在的节点,程序会抛出 NullPointerException。

// xml document is valid and existing nodes can be accessed without a problem
final Document doc = record.getDocument();
String author = "";
if (doc != null) {
// The next line throws a NullPointerException
author = doc.selectSingleNode("//mx:datafield[@tag='100']/mx:subfield[@code='a']").getText();
}

我尝试创建一个包含节点的列表,然后检查它是否不为空。然而,即使 xml 文件中不存在该字段,节点列表仍然包含一个元素。

String xpath = "//mx:datafield[@tag='100']/mx:subfield[@code='a']";
List<Node> nodes = doc.selectNodes(xpath); //contains one element

最佳答案

问题在于您检查了文档 (doc!=null) 是否存在,但没有检查 Node 是否存在。像这样检查,例如:

final Document doc = record.getDocument(); 
String author = "";

if (doc != null)
{
Node node = doc.selectSingleNode("//mx:datafield[@tag='100']/mx:subfield[@code='a']")
if (node!=null)
author = node.getText();
}

p.s:我不知道Node的本质,我只是把它当作伪代码。

关于java - 处理 XML Java 中不存在的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54824748/

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