处理 XML Java 中不存在的节点
Dealing with non existing nodes in XML Java
我必须处理各种 XML MARC 格式的文件。这些文件包含不同的字段,有时字段可能会丢失。在这种特殊情况下,作者的字段不存在,应将其保存为空字符串。
如何在尝试访问其值之前检查节点是否存在?
如果我尝试访问不存在的节点,程序会抛出 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
) 是否存在,但没有检查节点是否存在。像这样检查,例如:
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
的本质,我只是把它当作伪代码。
我必须处理各种 XML MARC 格式的文件。这些文件包含不同的字段,有时字段可能会丢失。在这种特殊情况下,作者的字段不存在,应将其保存为空字符串。
如何在尝试访问其值之前检查节点是否存在?
如果我尝试访问不存在的节点,程序会抛出 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
) 是否存在,但没有检查节点是否存在。像这样检查,例如:
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
的本质,我只是把它当作伪代码。