【问题标题】:XPath: From a node, select all the deepest descendants from the second child onXPath:从一个节点中,选择第二个孩子的所有最深的后代
【发布时间】:2013-06-19 10:29:00
【问题描述】:
<?xml version="1.0"?>
    <shipTo country="US">
        <name><strong>Alice Smith</strong></name>
        <street>123 Maple Street</street>
        <city><hi>Mill Valley</hi></city>
        <state>CA</state>
        <zip>90952</zip>
   </shipTo>

要选择的 xpath 表达式是什么 "123 Maple Street, Mill Valley, CA, 90952"

【问题讨论】:

    标签: html xml xpath xml-parsing html-parsing


    【解决方案1】:

    使用 XPath 2.0 或 XQuery 1.0 你可以使用

    string-join(/shipTo/*[position() gt 1], ', ')
    

    获取字符串123 Maple Street, Mill Valley, CA, 90952

    使用 XPath 1.0,您可以选择元素

    /shipTo/*[position() > 1]
    

    但您需要使用您使用 XPath 的宿主语言(例如 XSLT 或带有 XPath API 的编程语言)来构造字符串,以迭代选定的元素并连接字符串值。

    【讨论】:

      【解决方案2】:

      要从 shipTo 的所有子节点获取所有文本节点,但不是名称,请尝试以下操作:

      shipTo/*[local-name() != 'name']//text()
      

      要获得逗号分隔的列表,您需要使用 xlst 或 xpaht-2.0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-05
        • 1970-01-01
        • 2012-06-13
        • 2013-10-22
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多