1
내 응용 프로그램의 경우 루트 노드의 네임 스페이스를 확인하기 만하면되므로이 네임 스페이스를 얻기 위해 단일 작업을 실행하고 싶습니다.VTD-XML을 사용하여 지정된 요소의 네임 스페이스 찾기
선언 된 네임 스페이스를 모두 가져 오는 XPath를 사용하는 코드가 있는데 (모두 /*/namespace::*
), 그 다음에는 모든 것을 처리해야하며 각각에 대해 vn.toRawString을 사용하여 접두사와 비교해보십시오. 피하기 위해.
xmlns : attributes는 getAttrValNS에서 고려되지 않았으므로 분명히 여기에 명백한 내용이 누락되어 있습니다.하지만 주어진 요소의 네임 스페이스를 얻는 가장 좋은 방법은 무엇입니까?
String elementName = vn.toRawString(vn.getCurrentIndex());
String prefix = prefix(elementName);
String localName = localName(elementName);
QName rootQName;
if (prefix == null) {
rootQName = new QName(localName);
} else {
int nsIndex = vn.getAttrValNS("xmlns", prefix);
// Can't find index because xmlns attributes are not included
String namespace = vn.toRawString(nsIndex);
rootQName = new QName(namespace, localName);
}
단지 나에게 루트 노드가 아닌 루트 노드에 선언 된 모든 네임 스페이스의 네임 스페이스를 제공하는 간단한 XPath를가 있습니까?
나는 VTD-XML과 같은 XPath 함수를 지원하는 생각 네임 스페이스 URI (노드 집합?) 당신이 속임수를 썼는지 –
... 조사 할 수 있습니다. 'AutoPilot ap = 새로운 자동 조종 장치 (vn); ap.selectXPath ("namespace-uri (.)"); String ns = ap.evalXPathToString();' –