如何按id标签内的值排序XML文本?或快速转为JSON?
解决方案:XML 节点按id排序及转JSON
一、不转JSON直接按排序XML的节点
用XSLT可以直接处理XML结构,无需转换格式,是最适配的方案。
步骤1:编写XSLT排序脚本
保存为sort-data-by-id.xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- 保留原XML的所有节点和属性 --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <!-- 对包含<data>节点的父节点,按<id>值排序其子<data>节点 --> <xsl:template match="*[data]"> <xsl:copy> <xsl:apply-templates select="@*"/> <!-- 按<id>数值升序排序,若<id>是字符串,将data-type改为text --> <xsl:apply-templates select="data"> <xsl:sort select="id/text()" data-type="number" order="ascending"/> </xsl:apply-templates> </xsl:copy> </xsl:template> </xsl:stylesheet>
步骤2:用命令行工具执行排序
Linux/macOS可直接用自带的xsltproc:
xsltproc sort-data-by-id.xsl 你的输入文件.xml > 排序后的输出文件.xml
Windows可使用msxsl.exe(本地工具)或Python的lxml库执行XSLT。
二、简便将XML转为JSON
用Python的xmltodict库可以快速完成转换,步骤如下:
步骤1:安装依赖
pip install xmltodict
步骤2:编写转换脚本(可选同时排序)
保存为xml2json.py:
import xmltodict import json # 读取XML文件 with open('你的输入文件.xml', 'r', encoding='utf-8') as f: xml_content = f.read() # 转换为字典 data_dict = xmltodict.parse(xml_content) # 可选:转换时同时按id排序(需根据你的XML根节点调整路径) if 'root' in data_dict and 'data' in data_dict['root']: data_list = data_dict['root']['data'] # 按id数值排序,若id是字符串则去掉int() data_list.sort(key=lambda x: int(x['id'])) data_dict['root']['data'] = data_list # 转换为JSON并保存 json_content = json.dumps(data_dict, indent=2, ensure_ascii=False) with open('输出文件.json', 'w', encoding='utf-8') as f: f.write(json_content)
步骤3:运行脚本
python xml2json.py
内容的提问来源于stack exchange,提问作者ravipo
相关产品推荐
相关产品推荐

