2012-01-13 2 views
4

xpath를 사용하여 전체 트리 구조를 얻는 방법이 있습니까? 예를 들어, 말하자면 이것은 내가 노드의 모든 내용을 선택하기 위해 XPath를 싶습니다 나는 VTD-XML과 자바를 사용하고있다xpath 전체 xml 트리 구조를 얻으려면

<b> 
    <c> 
     data 
    </c> 
    </b> 

결과가 있어야한다

<a> 
    <b> 
     <c> 
     data 
     </c> 
    </b> 
</a> 

은 XML이다 지금까지 요소를 검색 할 수 있습니다. 이것은 내가 사용 해본 코드입니다.

+4

무엇에 대해'// b'? –

+0

안녕하세요, 작동하지 않는 것 같습니다. –

+0

정확히 무엇을 기대합니까? 몇 가지 코드를 보여줄 수 있습니까? –

답변

2

이상적으로 "// b"는 현재 노드의 문서에서 선택 항목과 일치하는 노드를 선택합니다.

+0

나는이 링크가 작동하는 것을 발견했습니다. 나는이 링크를 찾았습니다. [http : // stackoverflow.과 /에/1,146,690분의 6,012,662] [1] [1] : http://stackoverflow.com/a/6012662/1146690 –

3

사용는 :

/*/node() 

이 XML 문서의 최상위 요소의 모든 자식 노드를 선택합니다. 선택된 모든 요소는 전체 하위 트리 (이 요소가 최상위 노드 임)를 유지하기 때문에 이러한 모든 노드 세트는 정확히 원하는 하위 트리 구조를 갖습니다.

XSLT 기반 인증 : XPath 식을 평가하고, 상기 선택된 노드가 출력

<a> 
    <b> 
    <c> 
     data 
    </c> 
    </b> 
</a> 

이 변환이 제공된 XML 문서에인가

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/"> 
    <xsl:copy-of select="/*/node()"/> 
</xsl:template> 
</xsl:stylesheet> 

원하는 결과를 얻으려면 :

<b> 
    <c> 
     data 
    </c> 
</b> 
2

XPath는 노드 또는 노드 집합을 선택합니다. 원본 소스 트리에 포인터를 반환하는 것으로 생각하십시오. "전체 트리 구조"를 반환하지 않으며, 해당 구조에서 선택된 노드에 대한 포인터를 반환합니다. 선택한 노드간에 탐색하여 전체 구조를 프로그램에서 사용할 수 있습니다. 탐색은 추가 XPath 표현식을 사용하거나 DOM과 유사한 탐색 API를 사용하거나 직렬화와 같은 작업에 의해 암시 적으로 수행 할 수 있습니다 (일반적으로 노드를 직렬화하면 해당 노드를 루트로하는 전체 하위 트리가 표시됨).

0

사용

/descendant-or-self::node()