在下面的代码中,我尝试使用 XPath 访问我的“处理程序”XML 元素,但我没有运气 - “elemHandler”元素始终为 null。有人可以与我分享明显的解决方案吗?提前致谢。
import java.io.IOException;
import java.io.StringReader;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
public class XPathTest {
private static String jobString = "<job name=\"Workflow.JOB\">" +
" <handler name=\"xslt.converter\"/>" +
" <handler name=\"openoffice.renderer\">" +
" <opts input=\"ODS\" output=\"PDF\"/>" +
" </handler>" +
"</job>";
public static void main(String[] args) {
try {
Element elemJobInfo = new SAXBuilder().build(new StringReader(jobString)).detachRootElement();
XPath handlerExpression = XPath.newInstance("//stp:handler[2]");
handlerExpression.addNamespace("stp", "http://service.mine.org/dgs");
Element elemHandler = (Element) handlerExpression.selectSingleNode(elemJobInfo);
jobString = elemHandler.toString();
}
catch (IOException e) {
System.out.println("Failure: " + e);
}
catch (JDOMException e) {
System.out.println("Failure: " + e);
}
catch (Exception e) {
System.out.println("Failure: " + e);
}
}
}
最佳答案
stp
命名空间怎么了? jobString
中的 XML 不引用任何命名空间。您尝试过不带前缀吗?
//handler[2]
关于java - 使用 JDom 的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326942/