【问题标题】:Extracting xml content with xpath expression使用 xpath 表达式提取 xml 内容
【发布时间】:2017-09-07 13:32:02
【问题描述】:

我有以下要求:

<request>
   <sender>A</sender>
   <id>01</id>
   <parameters>
       <parameter value="1" />
       <parameter value="2" />
   </parameters>
</request>

我想发送回复:

<response>
   <id>01</id>
   <parameters>
       <parameter value="1" />
       <parameter value="2" />
   </parameters>
   <result>3</result>
</response>

所以大部分响应都是相同的:id、参数。有没有办法使用 xpath 表达式获取 xml 全文的子集? 我想得到:

   <id>01</id>
   <parameters>
       <parameter value="1" />
       <parameter value="2" />
   </parameters>

可选问题:是否可以只获取一个字符串? 基本上我希望我的 XPath 评估结果是:

   "<id>01</id>
   <parameters>
       <parameter value="1" />
       <parameter value="2" />
   </parameters>"

谢谢!

【问题讨论】:

  • 不,XPath 在这里是错误的工具。 (XPath 2.0 可能能够拼凑一些类似转换的输出,但您不会乐于走这条路。) XPath 主要用于选择,但您的任务需要转换。请改用 XSLT。

标签: xpath xpath-2.0


【解决方案1】:

XPath 不能创建新节点或修改现有节点:它只能选择输入中已经存在的节点。您需要 XQuery 或 XSLT。这很简单(XSLT 2.0):

<xsl:template match="request">
  <response>
    <xsl:copy-of select="id, parameters"/>
    <result>3</result>
  </response>
</xsl:template>

【讨论】:

    猜你喜欢
    • 2021-07-25
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多