2010-01-29 3 views
1

다음 XML을 가지고 있습니다.Jaxen에서 빈 네임 스페이스로 무언가를 선택하려면 어떻게해야합니까?

<config xmlns="http://www.someurl.com"> 
    <product> 
    <brand> 
     <content /> 
    </brand> 
    </product> 
</config> 

JDOM을 멋지게 읽습니다.

하지만 Jaxen을 사용하여 내용을 잡으려고 할 때 아무 것도 얻을 수없는 것 같습니다.

다음은 작동하지 않는 예제입니다.

XPath xpath = new JDOMXPath("config"); 

SimpleNamespaceContext namespaceContext = new SimpleNamespaceContext(); 
namespaceContext.addNamespace("", "http://www.someurl.com"); 

xpath.setNamespaceContext(namespaceContext); 

assert xpath.selectNodes(document).size() > 0 : "should find more than 0"; 

이 어설 션은 항상 실패합니다.

내가 뭘 잘못하고 있니?

답변

1

접두어를 지정해야합니다. 그 전화 걸기 addNamespace ("hopfrog", "http : // ..."); 그런 다음 XPath ("hopfrog : config");

XML의 접두어는 실제 데이터 모델의 일부가 아닙니다. 실제 데이터 모델은 각 요소 및 속성에 URL (공백 일 수 있음)을 지정합니다. 올바른 URL에 바인딩되어있는 한 XPath에서 원하는 모든 접두사를 사용할 수 있습니다. 원하는 URL이 비어 있으므로 접두어를 '공백'에 바인딩합니다.

+0

하지만 그건 내 XML과 일치하지 않습니다! 다음과 같은 xml과 일치하지 않습니까?

+0

물론 있습니다. 접두어는 '진짜'가 아닙니다. 진짜는 URL입니다 ... – bmargulies

관련 문제