我有一些 XML 标签名称存储在一个文本文件中,这是一个 XML 文件,我想在其中添加相同的字符串作为这些标签的另一个值。
XML 标签文件:
name1
name2
name3
XML 文件:
<Category name="name1">value1 value2 value3 ...</Category>
<Category name="name2">value1 value2 value3 ...</Category>
<Category name="name3">value1 value2 value3 ...</Category>
我尝试了几十个“sed”、“cat”命令,但非常痛苦......我期望在使用脚本/命令后,XML 文件会如下所示:
<Category name="name1">VALUE4 value1 value2 value3 ...</Category>
<Category name="name2">VALUE4 value1 value2 value3 ...</Category>
<Category name="name3">VALUE4 value1 value2 value3 ...</Category>
(VALUE4是我要添加的字符串,我想将它添加为第一个值!)
提前感谢您的帮助!
勒普松
这项工作的工具是 XSLT。
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSLTransform"
version="3.0"
expand-text="yes"/>
<xsl:variable name="tags"
select="tokenize(unparsed-text('tags-file.txt'))"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="Category[@name=$tags]/text()">
<xsl:text>VALUE4 {.}</xsl:text>
</xsl:template>
</xsl:transform>
我在这里使用了XSLT 3.0。 1.0 处理器的使用范围更广,但这使得代码更加冗长。
不要尝试使用基于文本的工具来执行此操作。正如您所发现的,正确执行它是一件很痛苦的事情,当您成功时,只要有人提供与您测试的文件稍有不同的 XML 文件,您的代码就会失败。