Text-Processing

如何在 XML 文件中重命名嵌入在某些其他特定標籤中的特定標籤

  • May 6, 2022

什麼是 xmlstarlet 命令將一個標籤值替換為另一個標籤值,僅適用於嵌入在其他指定標籤中的指定標籤?

範例:搜尋 tag 的每次出現,僅當它在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 文件有關。

$ 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

引用自:https://unix.stackexchange.com/questions/701641