<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
<fields>
<fullName>Summary__c</fullName>
<defaultValue>false</defaultValue>
<deprecated>false</deprecated>
<externalId>false</externalId>
<inlineHelpText>Dummy Text.</inlineHelpText>
<label>Summary</label>
<trackTrending>false</trackTrending>
<type>Checkbox</type>
</fields>
<label>Object Name</label>
</CustomObject>
我有上面的XML并尝试运行以下命令($ f是文件的变量引用):
xmlstarlet ed -L -N x="http://soap.sforce.com/2006/04/metadata" -u "//x:label" -v 'test' $f;
目标是将标签元素用“对象名称”修改为“测试”,而不是名为“摘要”的标签。但两者都在改变。
我试图修改选择器以执行“CustomObject / label”,但似乎没有正确选择。
任何人都有任何想法只能点击“对象名称”标签。
答案 0 :(得分:1)
我认为你非常接近。试试这个xpath而不是......
/x:CustomObject/x:label
更新了命令行......
xmlstarlet ed -L -N x="http://soap.sforce.com/2006/04/metadata" -u "/x:CustomObject/x:label" -v 'test' $f;
此外,由于您只是尝试选择x:label
作为根元素的直接子元素,因此您也可以使用此较短的xpath ...
/*/x:label