아래 코드에서 XPath를 사용하여 'handler'XML 요소에 액세스하려고 시도하고 있지만 'elemHandler'요소는 항상 null입니다. 누구나 나와 함께 분명한 해결책을 공유 할 수 있습니까? 미리 감사드립니다.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 식의 변화를 시도 할. 연구에 따르면 XPath는 규정되지 않은 이름 공간 및/또는 기본 네임 스페이스에서 작동하지 않습니다. 당신은 하나를 제공해야합니다. – user5257774
XPath는 실제로 기본 네임 스페이스에서 작동합니다. 내가 인식하고있는 유일한 네임 스페이스 문제는'xmlns = "some-uri"선언을 존중하지 않는다는 것입니다. 문서에서 빈 접두사를 변경하면 XPath는이를 무시합니다. 기본 네임 스페이스에없는 요소에 대한 네임 스페이스 접두사가 필요합니다. 예를 들어'/ html'을 사용하여 XHTML 문서에서'와 일치시킬 수 없습니다. –