XPath:从节点中,选择第二个子节点上所有最深的后代

时间:2013-06-22 10:25:26

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

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

2 个答案:

答案 0 :(得分:0)

使用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的编程语言)构造字符串,以迭代所选元素并连接字符串值。

答案 1 :(得分:0)

要从船舶的所有子项获取所有文本节点,请尝试以下命令:

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

要获得以逗号分隔的列表,您需要使用xslt或xpath-2.0