java - xpath 和 java 如果没有 id 匹配

标签 java xml xpath

我有一个使用分词器生成的单词列表,这些单词都有一个数字引用,即: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
}

还有其他流控制语句,例如 breakreturn 甚至标签,您可以使用它们来避免此陷阱。

关于java - xpath 和 java 如果没有 id 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20894034/

相关文章:

java - 使用java复制节点内的所有元素,但不复制XML中的节点标签

c# - 在 C# 代码中解析(大)XML 的最佳方法是什么?

xpath - 用于按名称查找所有属性值的 GPath 表达式

java - 如何在 java 1.5 中发送 smtp 邮件?

java - eclipse 在启动时崩溃

java - 如何在不更改代码的情况下更改tomcat中eclipselink的日志级别?

java - 使用 StAx 解析 XML 文件时出错

python - 无法在 Excel 文件中正确写入提取的项目?

java - xpath 获取子节点相对于 XML 中父节点的位置

由 ClassLoader 锁定的 Java JAR 文件