Вставьте элемент XML в документ XML с помощью Ant
Я хочу вставить один элемент XML в документ XML:-
Входной XML:-
<cus:try xmlns:cus="http://www.abc.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xt="http://www.efg.com">
<cus:trying>
<cus:query>
<xt:resourceTypes>abc</xt:resourceTypes>
<xt:envValueTypes>def</xt:envValueTypes>
</cus:query>
</cus:trying>
</cus:try>
Выходной XML:-
<cus:try xmlns:cus="http://www.abc.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xt="http://www.efg.com">
<cus:trying>
<cus:query>
<xt:resourceTypes>abc</xt:resourceTypes>
<xt:resourceTypes>bcd</xt:resourceTypes>
<xt:envValueTypes>def</xt:envValueTypes>
</cus:query>
</cus:trying>
</cus:try>
Это означает, что я пытаюсь вставить еще один с пространствами имен. Мне нужно вставить точно так, как это..
Я пытаюсь ниже
<xmltask source="abc.xml" dest="abc.xml">
<insert path="//*[local-name()='resourceTypes']"> <![CDATA[
<xa:resourceTypes id="3"/>
]]>
</insert>
</xmltask>
Однако это терпит неудачу.
1 ответ
Решение
Получить <insert>
для работы, явно обратитесь к пространству имен в элементе. Также <insert>
по умолчанию ставит новые элементы под существующие. Код ниже меняет значение по умолчанию на after
,
<xmltask source="abc.xml" dest="abc.xml">
<insert path="//*[local-name()='resourceTypes']" position="after"> <![CDATA[
<xt:resourceTypes xmlns:xt="http://www.efg.com">bcd</xt:resourceTypes>
]]>
</insert>
</xmltask>
Результирующий XML, основанный на XML в вопросе:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<cus:try xmlns:cus="http://www.abc.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xt="http://www.efg.com">
<cus:trying>
<cus:query>
<xt:resourceTypes>abc</xt:resourceTypes>
<xt:resourceTypes>bcd</xt:resourceTypes>
<xt:envValueTypes>def</xt:envValueTypes>
</cus:query>
</cus:trying>
</cus:try>