使用xmlstarlet更改XML,具体取决于另一个元素

时间:2014-06-12 10:47:42

标签: xml xmlstarlet

我会哭...我读了2篇它不适合我的帖子....我测试了半天....我的xml看起来像这样:

<ConfigData xmlns="http://xml.avaya.com/endpointAPI">
<version>1</version>
<parameter>
<name>EnablePresence</name>
<value>1</value>
</parameter>
<parameter>
<name>CurrentSkin</name>
<value>1</value>
</parameter>
<parameter>
<name>DialPlanNationalPhoneNumbLengthList</name>
<value>6</value>
</parameter>
</ConfigData>

xmlstarlet应该将值更改为(替换旧文件...)

<ConfigData xmlns="http://xml.avaya.com/endpointAPI">
<version>1</version>
<parameter>
<name>EnablePresence</name>
<value>1</value>
</parameter>
<parameter>
<name>CurrentSkin</name>
<value>1</value>
</parameter>
<parameter>
<name>DialPlanNationalPhoneNumbLengthList</name>
<value>7</value>
</parameter>
</ConfigData>

我的最后一次尝试是:

xml edit --inplace --update '//parameter[name="DialPlanNationalPhoneNumbLengthList"]/value' -v 7 config.xml

任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

我解决了.... xml edit -L -N x =“xml.avaya.com/endpointAPI”; -u“/ x:ConfigData / x:参数[x:name ='DialPlanNationalPhoneNumbLengthList'] / x:value”-v 7 config.xml下一步是编辑多个值......想法?

另一个问题:是否可以使用占位符解决所有命名空间的命名空间问题?