如果没有匹配的id,则使用xpath和java

如果没有匹配的id,则使用xpath和java,java,xml,xpath,Java,Xml,Xpath,我有一个使用标记器的单词列表,所有单词都有一个数字引用,即:Rottweiler=n#10001 我也有一个xml文件,我可以用它来发现罗特韦尔犬是分类狗 但是,其中一些单词的id不在xml文件中,如果id与xml文件中的任何id不匹配,我要做的是让程序移到下一个单词上。现在,如果找不到,我的整个程序就会崩溃 这就是我到目前为止所做的: String search1 = "11111"; String nodePrefix = "n#"+search1; Node theNode = (No

我有一个使用标记器的单词列表,所有单词都有一个数字引用,即:Rottweiler=n#10001

我也有一个xml文件,我可以用它来发现罗特韦尔犬是分类狗

但是,其中一些单词的id不在xml文件中,如果id与xml文件中的任何id不匹配,我要做的是让程序移到下一个单词上。现在,如果找不到,我的整个程序就会崩溃

这就是我到目前为止所做的:

String search1 = "11111";
String nodePrefix =  "n#"+search1;

Node theNode = (Node) xpath.evaluate("//*[@id='" + nodePrefix+"']", document, XPathConstants.NODE);
String categ = theNode.getAttributes().getNamedItem("categ").getNodeValue();
System.out.println("Animal "+ nodePrefix + " has category " + categ);
        ...more code
如果表达式:

Node theNode = (Node) xpath.evaluate("//*[@id='" + nodePrefix+"']", document, XPathConstants.NODE);
未找到节点,它返回
null
。所以在这种情况下您不能做任何事情,您应该避免执行程序的其余部分

Node theNode = (Node) xpath.evaluate("//*[@id='" + nodePrefix+"']", document, XPathConstants.NODE);
if(theNode!=null){
    String categ = theNode.getAttributes().getNamedItem("categ").getNodeValue();
    System.out.println("Animal "+ nodePrefix + " has category " + categ);
            ...more code
}

还有另一种流控制语句,如
break
return
甚至是标签,您可以使用它们来避免这个陷阱。

在这种情况下,我可以使用if语句来说明节点是否为空,然后运行其余的节点吗?这正是节点所做的=空意味着。如果node不为null,则删除其余代码。