【发布时间】:2020-05-26 07:50:31
【问题描述】:
我想创建 Salesforce Dynamic package.xml 文件。我遵循了 apexandbeyond.wordpress.com/2017/03/15/dynamic-package-xml-generation/ blog 中提到的过程,它既不更新也不在 xml 文件中插入数据。我正在尝试以下方式,但我不适合我。请帮助我。 下面的代码在循环中,我需要动态更新 xml 文件。在这里,我正在动态获取修改后的文件。
git diff-tree --no-commit-id --name-only --diff-filter=ACMRTUXB -t -r $PREVRSA $LCOMMIT | \ 同时读取-r CFILE;做 案例“$CFILE” 在 .cls) TYPENAME="ApexClass";; .component) TYPENAME="ApexComponent";; .page) TYPENAME="ApexPage";; *) TYPENAME="未知类型";;
esac
if [[ "$TYPENAME" != "UNKNOWN TYPE" ]]
then
echo $TYPENAME "," $ENTITY #example:(ApexClass,TestClass1
#example: ApexClass,Testclass2
#example: ApexPage,TestPage) # getting values Dynamically
xmlstarlet edit -L --subnode "/Package/types[name=$TYPENAME]" --type elem -n members -v
"$ENTITY" testpackage.xml > edipackage.xml
fi
完成
echo 清理 Package.xml
xmlstarlet ed -L -i /Package -t attr -n xmlns -v "http://soap.sforce.com/2006/04/metadata" testpackage.xml > edipackage.xml
原始 testpackage.xml 文件:
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>*</members>
<name>ApexClass</name>
</types>
<types>
<members>*</members>
<name>ApexComponent</name>
</types>
<types>
<members>*</members>
<name>ApexPage</name>
</types>
<version>48.0</version>
</Package>
预期输出:
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>TestClass1</members>
<members>TestClass2</members>
<name>ApexClass</name>
</types>
<types>
<members>TestPage</members>
<name>ApexPage</name>
</types>
<version>48.0</version>
</Package>
请帮助我。
【问题讨论】:
标签: salesforce xmlstarlet