XMLStartlet未更新salesforce package.xml文件

问题描述 投票:0回答:1

我想创建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>

请对此提供帮助。

salesforce xmlstarlet
1个回答
0
投票

名称空间应定义如下:

xml sel -N x=http://soap.sforce.com/2006/04/metadata -t -m //x:name -v . -n salesforce.xml

返回:

ApexClass 
ApexComponent 
ApexPage
© www.soinside.com 2019 - 2024. All rights reserved.