首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xmlstarlet更新属性

xmlstarlet更新属性
EN

Stack Overflow用户
提问于 2011-10-20 22:57:53
回答 2查看 9.2K关注 0票数 6

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

以下是该xml文件的示例:

代码语言:javascript
复制
<?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“更新属性的命令。

代码语言:javascript
复制
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

此输出与输入严格相同……

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-20 23:22:48

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

代码语言:javascript
复制
xmlstarlet edit \
  --update "/channel[@name='xfce4-keyboard-shortcuts']/property[@name='commands']/property[@name='custom']/property[@name='XF86Display']/@value" \
  --value  "test" xfce4-keyboard-shortcuts.xml

或者更简单:

代码语言:javascript
复制
xmlstarlet edit \
  --update "//property[@name='XF86Display']/@value" \
  --value "test" xfce4-keyboard-shortcuts.xml
票数 9
EN

Stack Overflow用户

发布于 2013-04-12 16:08:45

正确的方式(将动态更新设置)

代码语言:javascript
复制
xfconf-query -c xfce4-keyboard-shortcuts -p /commands/default/XF86Display -s 'test'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7837879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档