XMLStartlet не обновляет пакет salesforce. xml файл - PullRequest
0 голосов
/ 26 мая 2020

Я хочу создать файл Salesforce Dynami c package. xml. Я выполнил процесс, упомянутый в этом apexandbeyond.wordpress.com / 2017/03/15 / Dynami c -package- xml -generation / blog , это ни обновление, ни вставка данных в xml файл. Я пытаюсь пойти по следующему пути, но у меня не работает. Пожалуйста помоги мне с этим. Код ниже находится в l oop мне нужно динамически обновить xml файл. Здесь я получаю динамически измененный файл.

git diff-tree --no-commit-id --name-only --diff-filter = ACMRTUXB -t -r $ PREVRSA $ LCOMMIT | \ при чтении -r CFILE; do case "$ 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

done

echo Очистка пакета. xml

xmlstarlet ed -L -i / Package -t attr -n xmlns -v "http://soap.sforce.com/2006/04/metadata" тестовый пакет. xml> edipackage. xml

Исходный тестовый пакет. 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>

Пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 30 мая 2020

Пространство имен должно быть определено следующим образом:

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

, которое возвращает:

ApexClass 
ApexComponent 
ApexPage
...