You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XPath提取XML中Latitude与Longitude的组合值?

提取Locations节点的经纬度组合值

先假设你的XML结构示例如下(方便对应表达式):

<Root>
  <Locations>
    <Latitude>39.9042</Latitude>
    <Longitude>116.4074</Longitude>
  </Locations>
  <Locations>
    <Latitude>31.2304</Latitude>
    <Longitude>121.4737</Longitude>
  </Locations>
</Root>

分XPath版本的解决方案

XPath 1.0

XPath 1.0本身不支持直接返回结构化的经纬度对,但可以通过两种方式实现需求:

  • 先获取Locations节点再提取子值:
    使用表达式定位所有Locations节点:

    //Locations
    

    拿到每个节点后,在宿主代码(比如XSLT、Python的lxml库)中分别读取Latitude和Longitude的文本值,组合成单个结果项。

  • 直接拼接成字符串(部分工具支持):
    利用concat函数拼接经纬度:

    //Locations/concat(Latitude, ', ', Longitude)
    

    执行后会返回每个Locations对应的"纬度, 经度"格式字符串列表。

XPath 2.0+

XPath 2.0及以上支持更灵活的序列和字符串处理:

  • 返回拼接好的字符串序列:
    使用string-join函数组合经纬度:

    //Locations/string-join((Latitude, Longitude), ', ')
    

    结果会是包含所有经纬度对的字符串序列,比如("39.9042, 116.4074", "31.2304, 121.4737")。

  • 返回经纬度节点序列:
    如果需要保留节点结构,可使用:

    //Locations/(Latitude, Longitude)
    

    返回的节点按Locations分组排列,每两个节点对应一组经纬度。

关键注意事项

  • 如果XML包含命名空间,必须先绑定对应前缀,比如XML有xmlns="http://example.com",则表达式要写成//ns:Locations(ns为绑定的前缀)。
  • 避免滥用//全局匹配,如果Locations节点有固定父节点,用精确路径(比如/Root/Locations)可以避免匹配到无关节点。

内容的提问来源于stack exchange,提问作者Rob See

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:03:18