xpath获取整个xml树结构

有没有办法使用xpath获取整个树结构.例如,假设这是xml

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

我希望xpath获取节点的所有内容,结果应该是

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

到目前为止,我一直在使用VTD-XML和java来检索元素.这是我一直在使用的代码.

VTDGen vg = new VTDGen();
    vg.setDoc(xmlString);
    vg.parse(true);
    VTDNav vn = vg.getNav();
    Autopilot ap = new Autopilot(vn);
    ap.selectXPath(xPath);
    String data = ap.evalXPathToString();

解决方法

使用:

/*/node()

这将选择XML文档顶部元素的所有子节点.所有这些节点的集合都具有所需的子树结构,因为每个选定的元素都保留其整个子树(其中该元素是顶级节点).

基于XSLT的验证:

<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>

当此转换应用于提供的XML文档时:

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

评估XPath表达式并输出所选节点,产生所需的正确结果:

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

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念