在我的代码中,我尝试使用XPath访问我的'处理程序'XML元素,但我没有运气 - 'elemHandler'元素始终为空。任何人都可以与我分享明显的解决方案?提前致谢。使用JDom的XPath
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);
}
}
}
是的,我有。研究表明,XPath不适用于不合格和/或默认名称空间。你必须提供一个。 – user5257774 2010-07-24 21:44:58
XPath确实可以使用默认名称空间。我知道的唯一的命名空间问题是它不尊重'xmlns =“some-uri”'声明。如果您更改文档中的空白前缀,XPath将忽略它;它需要一个名称空间前缀,用于不在默认名称空间中的元素。例如,在XHTML文档中,不能使用'/ html'来匹配'''。 – 2010-07-24 22:38:13