代码之家  ›  专栏  ›  技术社区  ›  Sofía Ennui

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

  •  0
  • Sofía Ennui  · 技术社区  · 6 年前

    我必须处理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();
    }
    

    String xpath = "//mx:datafield[@tag='100']/mx:subfield[@code='a']";
    List<Node> nodes = doc.selectNodes(xpath); //contains one element
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   aran    6 年前

    问题是你要检查文档是否存在( 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、 学生:我不知道 Node ,我只是把它当作伪代码。

    推荐文章