我想创建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 =“ UNKNOWN TYPE” ;;
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>
请对此提供帮助。
名称空间应定义如下:
xml sel -N x=http://soap.sforce.com/2006/04/metadata -t -m //x:name -v . -n salesforce.xml
返回:
ApexClass
ApexComponent
ApexPage