处理XML Java中不存在的节点
我必须以MARC格式处理各种XML文件。文件包含不同的字段,有时字段可能会丢失。在这种特殊情况下,作者字段不存在,应将其保存为空字符串 在尝试访问某个节点的值之前,如何检查该节点是否存在? 如果我尝试访问不存在的节点,程序将抛出NullPointerException处理XML Java中不存在的节点,java,xml,nullpointerexception,marc,Java,Xml,Nullpointerexception,Marc,我必须以MARC格式处理各种XML文件。文件包含不同的字段,有时字段可能会丢失。在这种特殊情况下,作者字段不存在,应将其保存为空字符串 在尝试访问某个节点的值之前,如何检查该节点是否存在? 如果我尝试访问不存在的节点,程序将抛出NullPointerException // xml document is valid and existing nodes can be accessed without a problem final Document doc = record.getDocume
// 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
String xpath=“//mx:datafield[@tag='100']]/mx:subfield[@code='a']”;
列表节点=doc.selectNodes(xpath)//包含一个元素
问题在于您检查了文档的存在性(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:我不知道节点的本质,我只是把它当作伪代码