处理XML Java中的非现有节点



我必须以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( 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的性质,我只是像伪代码一样说。

相关内容

  • 没有找到相关文章

最新更新