如何使用XSLT为person子元素id插入迭代序号
给XML中person元素的id子元素插入递增序号的实现方法
以下是两种高效的实现方式:
方法一:使用XSLT转换
XSLT是处理XML文档的标准工具,适合这类结构化修改需求。创建如下XSLT样式表(命名为add-id.xsl):
<?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> <!-- 匹配person下的id元素,插入递增序号 --> <xsl:template match="person/id"> <id><xsl:value-of select="position()"/></id> </xsl:template> </xsl:stylesheet>
转换命令(以xsltproc为例):
在终端执行以下命令,将源XML(假设名为source.xml)转换为目标XML:
xsltproc add-id.xsl source.xml > result.xml
转换后就能得到你期望的带递增id的XML文档。
方法二:使用Python脚本实现
如果你熟悉Python,可以用内置的xml.etree.ElementTree库来处理:
import xml.etree.ElementTree as ET # 解析源XML文件 tree = ET.parse('source.xml') root = tree.getroot() # 遍历所有person元素,为id赋值递增序号 for index, person in enumerate(root.findall('person'), start=1): id_elem = person.find('id') id_elem.text = str(index) # 保存修改后的XML tree.write('result.xml', encoding='UTF-8', xml_declaration=True)
使用说明:
- 将源XML保存为
source.xml - 运行上述脚本,会生成带递增id的
result.xml
源XML示例:
<persons> <person> <id></id> <name>Lisa</name> </person> <person> <id></id> <name>Robin</name> </person> <person> <id></id> <name>Alex</name> </person> </persons>
转换后结果:
<persons> <person> <id>1</id> <name>Lisa</name> </person> <person> <id>2</id> <name>Robin</name> </person> <person> <id>3</id> <name>Alex</name> </person> </persons>
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

