加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xpath获取整个xml树结构

发布时间:2020-12-16 23:19:57 所属栏目:百科 来源:网络整理
导读:有没有办法使用xpath获取整个树结构.例如,假设这是xml a b c data /c /b/a 我希望xpath获取节点的所有内容,结果应该是 b c data /c /b 到目前为止,我一直在使用VTD-XML和java来检索元素.这是我一直在使用的代码. VTDGen vg = new VTDGen(); vg.setDoc(xmlStr
有没有办法使用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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读