gpt4 book ai didi

xmlstarlet 更新一个属性

转载 作者:行者123 更新时间:2023-12-03 20:46:44 26 4
gpt4 key购买 nike

我正在处理一个处理 xml 文件的脚本。
我想用 xmlstarlet 更新这个 xml 文件中的属性值,但它不起作用。

这是 xml 文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-keyboard-shortcuts" version="1.0">
<property name="commands" type="empty">
<property name="default" type="empty">
<property name="&lt;Alt&gt;F2" type="empty"/>
<property name="&lt;Control&gt;&lt;Alt&gt;Delete" type="empty"/>
<property name="XF86Display" type="string" value="xrandr --output LVDS --auto --output VGA-0 --mode 1680x1050_60.00 --right-of LVDS"/>
</property>
<property name="custom" type="empty">
<property name="&lt;Alt&gt;F2" type="string" value="xfrun4"/>
<property name="&lt;Control&gt;&lt;Alt&gt;Delete" type="string" value="xflock4"/>
<property name="XF86Display" type="string" value="xrandr --output LVDS --auto --output VGA-0 --mode 1680x1050_60.00 --right-of LVDS"/>
<property name="override" type="bool" value="true"/>
</property>
</property>
</channel>

这是在自定义属性节点中更新名为“XF86Display”的属性的命令。
xmlstarlet edit \
--update "/xml/channel[@name=xfce4-keyboard-shortcuts]/property[@name=commands]/property[@name=custom]/property[@name=XF86Display]/@value" \
--value "test" xfce4-keyboard-shortcuts.xml

此输出与输入完全相同...

谢谢

最佳答案

这对我有用(根是 <channel> ;引用的属性值):

xmlstarlet edit \
--update "/channel[@name='xfce4-keyboard-shortcuts']/property[@name='commands']/property[@name='custom']/property[@name='XF86Display']/@value" \
--value "test" xfce4-keyboard-shortcuts.xml

或者更简单:
xmlstarlet edit \
--update "//property[@name='XF86Display']/@value" \
--value "test" xfce4-keyboard-shortcuts.xml

关于xmlstarlet 更新一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com