
DOMNamedNodeMap::getNamedItemNS 메서드는 namespace URI와 로컬 이름을 사용하여 노드를 반환합니다. 하지만 이 메서드는 namespace URI만 반환하는 것처럼 보일 수 있습니다. 이는 namespace URI가 포함된 노드가 반환되지 않고, namespace URI만 반환되는 것 때문입니다.
이 문제를 해결하려면, namespace URI와 로컬 이름을 사용하여 노드를 찾는 대신, namespace URI를 사용하여 노드를 찾은 다음, 노드의 namespace URI와 로컬 이름을 비교하여 원하는 노드를 찾는 방법을 사용할 수 있습니다.
예를 들어, 다음 코드는 namespace URI와 로컬 이름을 사용하여 노드를 찾는 대신, namespace URI를 사용하여 노드를 찾은 다음, 노드의 namespace URI와 로컬 이름을 비교하여 원하는 노드를 찾는 방법을 사용합니다.
#hostingforum.kr
java
Node node = domNamedNodeMap.getNamedItemNS(namespaceURI, localName);
if (node != null && namespaceURI.equals(node.getNamespaceURI()) && localName.equals(node.getLocalName())) {
// 원하는 노드를 찾았습니다.
}
또는, DOM Level 3 XPath API를 사용하여 namespace URI와 로컬 이름을 사용하여 노드를 찾을 수 있습니다.
#hostingforum.kr
java
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//*[namespace-uri()='http://example.com' and local-name()='example']";
Node node = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);
이러한 방법을 사용하면 namespace URI와 로컬 이름을 사용하여 노드를 찾을 수 있습니다.
2025-03-02 20:49