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

如何将XML中的经纬度值合并为单个元素值?

实现XML经纬度合并的解决方案

嘿,这个需求用XSLT就能轻松搞定!我给你一步步拆解怎么实现:

核心思路

用XSLT(可扩展样式表语言转换)遍历XML文档,找到Longitude和Latitude节点,将它们的文本值用逗号拼接,生成新的<cordinate-point>元素,同时移除原来的两个经纬度节点,保留其他所有内容不变。

具体实现代码

输入示例XML

<root>
  <SomeOtherElement>其他内容</SomeOtherElement>
  <Longitude>-0.30365</Longitude>
  <Latitude>51.61965</Latitude>
  <AnotherElement>更多内容</AnotherElement>
</root>

XSLT转换模板

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- 身份模板:默认拷贝所有节点/属性,保证其他内容不受影响 -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <!-- 匹配包含经纬度的父节点,替换经纬度为新的坐标元素 -->
  <xsl:template match="*[Longitude and Latitude]">
    <xsl:copy>
      <!-- 先处理父节点下除经纬度外的其他子元素 -->
      <xsl:apply-templates select="node()[not(self::Longitude or self::Latitude)]"/>
      <!-- 生成新的坐标元素,拼接经纬度值 -->
      <cordinate-point>
        <xsl:value-of select="Longitude"/>
        <xsl:text>,</xsl:text>
        <xsl:value-of select="Latitude"/>
      </cordinate-point>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

关键说明

  • 第一个模板是身份模板,作用是原样拷贝XML中所有未被特殊匹配的节点,确保其他元素、属性都能保留。
  • 第二个模板专门匹配同时包含Longitude和Latitude的父节点:
    1. 先处理父节点里除了经纬度的所有子元素;
    2. 生成<cordinate-point>元素,把两个经纬度的值用逗号连接起来。
  • 如果你的经纬度有固定的父节点(比如<Location>),可以把match="*[Longitude and Latitude]"改成match="Location",这样匹配更精准。

如何运行转换

你可以用任意XSLT处理器(比如Saxon、Xalan),或者在线XML转换工具,把输入XML和上面的XSLT模板导入,就能得到目标结果啦~

内容的提问来源于stack exchange,提问作者Gotham Knight

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:02:09