You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用xmlstarlet命令替换XML标签中的CDATA值?

解决xmlstarlet修改XML中CDATA内容时的转义问题

当使用xmlstarlet的ed -u命令修改包含CDATA的XML节点值时,直接在-v参数中写入<![CDATA[...]]>会导致标签被转义成实体字符(<变为&lt;,>变为&gt;),无法得到预期的CDATA格式。

正确命令

使用--cdata选项指定CDATA内部的内容,xmlstarlet会自动生成正确的CDATA标签:

xmlstarlet ed -u '//item[@name="Rx_Frequency"]/val' --cdata '1234' file.xml

如果需要保留原XML的缩进格式,添加-P参数(保留空白):

xmlstarlet ed -P -u '//item[@name="Rx_Frequency"]/val' --cdata '1234' file.xml

示例验证

  • 输入文件(file.xml):
<item name="Rx_Frequency">
    <val><![CDATA[xxx]]></val>
</item>
  • 错误命令输出:
<item name="Rx_Frequency">
  <val>&lt;![CDATA[1234]]&gt;</val>
</item>
  • 正确命令输出:
<item name="Rx_Frequency">
    <val><![CDATA[1234]]></val>
</item>

内容的提问来源于stack exchange,提问作者Abdul Rehman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:25:26