기본 네임스페이스가 있는 XML 문서에서 XPath 사용
문제:
XML에서 XPath 평가 기본 네임스페이스가 있는 문서는 특히 네임스페이스 URI를 지정하지 않으면 어려운 작업입니다. 이 문제는 원하는 효과를 얻지 못한 채 setNamespaceAware에 의존할 때 발생합니다.
해결책:
기본 네임스페이스로 XPath를 효과적으로 활용하려면 다음 접근 방식을 고려하세요.
1. NamespaceContext:
NamespaceContext를 사용하면 네임스페이스 매핑을 수동으로 정의하여 XPath 조각이 접두사 없이 네임스페이스를 참조할 수 있습니다. 이 접근 방식은 접두사 사용에 유연성을 허용하고 XPath 표현식을 단순화합니다.
예제 코드:
<code class="java">// Custom NamespaceContext private static class MyNamespaceContext implements NamespaceContext { public String getNamespaceURI(String prefix) { if ("ns".equals(prefix)) { return "http://www.mydomain.com/schema"; } return null; } } // XPath with NamespaceContext XPath xPath = XPathFactory.newInstance().newXPath(); xPath.setNamespaceContext(new MyNamespaceContext()); NodeList nl = (NodeList) xPath.evaluate("/ns:root/ns:author", dDoc, XPathConstants.NODESET);</code>
2. 네임스페이스 참조 방지:
기본 네임스페이스를 사용해야 하는 경우 XPath 표현식을 조정하여 네임스페이스 참조를 완전히 제거하세요. 이 접근 방식을 사용하려면 적절한 XML 구문을 준수해야 하며 다양한 XML 구문 분석 라이브러리에서 일관된 동작을 보장해야 합니다.
예제 코드:
<code class="java">XPath xPath = XPathFactory.newInstance().newXPath(); NodeList nl = (NodeList) xPath.evaluate("/root/author", dDoc, XPathConstants.NODESET);</code>
참고:
이러한 기술을 사용하면 XPath를 사용하여 기본 네임스페이스로 XML 문서를 성공적으로 조작할 수 있습니다. 특정 XML 구조와 일치하도록 NamespaceContext 또는 XPath 표현식 내의 네임스페이스 선언을 사용자 정의해야 합니다.
위 내용은 기본 네임스페이스를 사용하여 XML 문서에서 XPath를 평가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!