xmlstarlet 不工作
xmlstarlet does not works
我想请教一些方向,因为我尝试了不同的方法,但我无法实现我的目标。
我的主要目标是能够在找到某个键时删除 destructiveChanges.xml 的整个块,在这种情况下,当前值为“ApexClass”,因此必须删除整个块。
**<types>
<name>ApexClass</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>**
这是我的代码:
**job1:
stage: test
before_script:
- apt-get update;apt-get install -y xmlstarlet
script:
- nomDeployedDC=${NONDEPLOYEDDC}
- echo -e "Test ${nomDeployedDC} "
- >
if [ ! -z "$nomDeployedDC" ]; then
echo "=== Additional cleaning ==="
for cleanItem in ${nomDeployedDC}; do
metadaType=${cleanItem%:*}
echo -e "Loop ${metadaType} "
cat destructiveChanges.xml
echo -ne "Cleaning ${metadaType} "
xmlstarlet ed --inplace -d '//_:types[_:name="${metadaType}"]' destructiveChanges.xml
cat destructiveChanges.xml
echo -e "\rCleaning final ${metadaType} "
done
isDeleted="$(grep -c "<types>" destructiveChanges.xml)"
deleted=${isDeleted%:*}
echo -e "isDeleted ${deleted} "
if [ "$deleted" == 1 ]; then
echo "=== Deleting destructiveChanges.xml file ==="
rm - destructiveChanges.xml
fi
else
echo -e "Additional cleaning should be added in the destructiveClean.list file "
fi**
输出
**
=== Additional cleaning ===
Loop ApexClass
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<name>ApexClass</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>EmailTemplate</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>CustomObject</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
</Package>Cleaning ApexClass <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<name>ApexClass</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>EmailTemplate</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>CustomObject</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
</Package>
Cleaning final ApexClass
isDeleted 3
Cleaning up file based variables
00:01
Job succeeded
**
有没有人可以帮我解决这个问题?
非常感谢!
要考虑命名空间,请尝试更改
xmlstarlet ed --inplace -d '//_:types[_:name="${metadaType}"]' destructiveChanges.xml
至
xmlstarlet ed -L -N x="http://soap.sforce.com/2006/04/metadata" -d "//x:Package//x:types[x:name[text()='${metadaType}']]" destructiveChanges.xml
看看它是否有效。
我想请教一些方向,因为我尝试了不同的方法,但我无法实现我的目标。
我的主要目标是能够在找到某个键时删除 destructiveChanges.xml 的整个块,在这种情况下,当前值为“ApexClass”,因此必须删除整个块。
**<types>
<name>ApexClass</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>**
这是我的代码:
**job1:
stage: test
before_script:
- apt-get update;apt-get install -y xmlstarlet
script:
- nomDeployedDC=${NONDEPLOYEDDC}
- echo -e "Test ${nomDeployedDC} "
- >
if [ ! -z "$nomDeployedDC" ]; then
echo "=== Additional cleaning ==="
for cleanItem in ${nomDeployedDC}; do
metadaType=${cleanItem%:*}
echo -e "Loop ${metadaType} "
cat destructiveChanges.xml
echo -ne "Cleaning ${metadaType} "
xmlstarlet ed --inplace -d '//_:types[_:name="${metadaType}"]' destructiveChanges.xml
cat destructiveChanges.xml
echo -e "\rCleaning final ${metadaType} "
done
isDeleted="$(grep -c "<types>" destructiveChanges.xml)"
deleted=${isDeleted%:*}
echo -e "isDeleted ${deleted} "
if [ "$deleted" == 1 ]; then
echo "=== Deleting destructiveChanges.xml file ==="
rm - destructiveChanges.xml
fi
else
echo -e "Additional cleaning should be added in the destructiveClean.list file "
fi**
输出
**
=== Additional cleaning ===
Loop ApexClass
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<name>ApexClass</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>EmailTemplate</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>CustomObject</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
</Package>Cleaning ApexClass <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<name>ApexClass</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>EmailTemplate</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>CustomObject</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
</Package>
Cleaning final ApexClass
isDeleted 3
Cleaning up file based variables
00:01
Job succeeded
**
有没有人可以帮我解决这个问题? 非常感谢!
要考虑命名空间,请尝试更改
xmlstarlet ed --inplace -d '//_:types[_:name="${metadaType}"]' destructiveChanges.xml
至
xmlstarlet ed -L -N x="http://soap.sforce.com/2006/04/metadata" -d "//x:Package//x:types[x:name[text()='${metadaType}']]" destructiveChanges.xml
看看它是否有效。