xmlstarlet-提取受控字段的Salesforce数据

xmlstarlet-提取受控字段的Salesforce数据,salesforce,xmlstarlet,Salesforce,Xmlstarlet,我正在寻找一种从Salesforce配置转储中提取受控字段数据的方法。Dump是XML文件,其中我有以下信息: <?xml version="1.0" encoding="UTF-8"?> <valueSet> <valueSettings> <controllingFieldValue>Product A</controllingFieldValue> <controllingFieldV

我正在寻找一种从Salesforce配置转储中提取受控字段数据的方法。Dump是XML文件,其中我有以下信息:

<?xml version="1.0" encoding="UTF-8"?>
<valueSet>
    <valueSettings>
        <controllingFieldValue>Product A</controllingFieldValue>
        <controllingFieldValue>Product B</controllingFieldValue>
        <valueName>1</valueName>
    </valueSettings>
    <valueSettings>
        <controllingFieldValue>Product A</controllingFieldValue>
        <valueName>2</valueName>
    </valueSettings>
</valueSet>
输出为:

Product A
Product B|1
Product A|2
Product A|1
Product A|2
因此,也会为
valueSettings
节点显示其他
controllingFieldValue
,其中找到了匹配的
controllingFieldValue


如何仅显示
controllingFieldValue
匹配条件与相应的
valueName

我能够使用以下方法获得正确的结果:

xmlstarlet sel -T -t -m '//valueSettings' -i 'controllingFieldValue[text()="Product A"]' -v 'controllingFieldValue[text()="Product A"]' -o '|' -v 'valueName[text()]' -n test.xml
输出为:

Product A
Product B|1
Product A|2
Product A|1
Product A|2

还有一种方法:
xmlstarlet sel-T-T-m'//valueSettings/controllingFieldValue[text()=“Product A”]'-v'text()'-o'|'-v'../valueName[text()]'-n test.xml