2012-10-11 5 views
0

getChildText()를 사용하여 몇 레벨 아래의 노드에서 텍스트를 가져 오려고합니다. 파일에는 두 개의 네임 스페이스가 있습니다. 아래 구문은 작동하지 않으며 을 텍스트 토큰에서 null으로 설정합니다.XML에 여러 네임 스페이스가있는 경우 네임 스페이스가있는 노드의 getChildText()를 사용하는 방법은 무엇입니까?

String textToGet = root.getChildText("ns1:Customer/ns1:Address/ns1:Street/ns2:Streetname"); 

나는 먼저 자식 요소를 얻고 텍스트를 얻는 대신에 하나의 라이너를 사용하고 싶다.

또한 일부 요소가 파일에 포함되지 않을 수 있기 때문에 getChild()를 체인하지 않을 것입니다.

답변

1
당신은 한 줄 것을 만들 수있게 될 수 없습니다

....

는 .... JDOM 2.x에서 그와 함께 도움이 XPath의 사용을 고려 :

XPathExpression<String> xpe = XPathFactory.instance().compile(
    Filters.fstring(), "ns1:Customer/ns1:Address/ns1:Street/ns2:Streetname", 
    null, namespace_ns1, namespace_ns2); 
String textToGet = xpe.evaluateFirst(root); 

을 (위의 XPath 식은 실제로 요소를 반환합니다 ... XPath의 끝에 "/ text()"를 추가하거나 textToGet을 String으로 변경해야합니다 (또한 필터도 마찬가지입니다) .

롤프