如果没有id匹配,则为xpath和java

时间:2014-01-02 23:42:57

标签: java xml xpath

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

我还有一个xml文件,我可以用它来查找Rottweiler是类别狗。

然而,其中一些单词的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

1 个答案:

答案 0 :(得分:1)

如果表达:

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
}

还有其他流量控制语句,例如breakreturn或甚至可用于避免此陷阱的标签。