如何在 XML 文件中重命名嵌入其他特定标签中的特定标签

如何在 XML 文件中重命名嵌入其他特定标签中的特定标签

仅针对嵌入其他指定标签中的指定标签,将一个标签值替换为另一个标签值的 xmlstarlet 命令是什么?

示例:搜索 tag 的每个出现,仅当它在标签内(在其他标签内)时才b需要替换为:d<a> ... </a>

  • 输入示例:
    <c>This is <b>an example</b>. <a>This is <b>a test;</b></a></c>
    
  • 期望的输出:
    <c>This is <b>an example</b>. <a>This is <d>a test;</d></a></c>
    

这篇文章是相关的如何在 XML 文件中将某些指定标签中的特定字符串替换为标签中嵌入的其他字符串在解决方案中,我试图找到格式化 xml 文件的方法。

答案1

$ cat file 
<c>This is <b>an example</b>. <a>This is <b>a test;</b></a></c>
$ xmlstarlet ed --rename '//a/b' -v 'd' file 
<?xml version="1.0"?>
<c>This is <b>an example</b>. <a>This is <d>a test;</d></a></c>

这将重命名b直接出现在a节点下的所有节点。这些节点的新名称将为d。由于我在 XPath 表达式的//前面使用,因此节点位于文档结构中的a/b位置并不重要。a

相关内容