Вставьте элемент 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>

Однако это терпит неудачу.


person user3384223    schedule 19.03.2014    source источник
comment
Может ли кто-нибудь помочь мне в этом....   -  person user3384223    schedule 20.03.2014


Ответы (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>
person Chad Nouis    schedule 20.03.2014
comment
Однако он добавляется, как показано ниже: - ‹resourceTypes xmlns=efg.com›bcd‹/resourceTypes› не следующим образом ‹xt:resourceTypes›bcd‹/xt:resourceTypes› - person user3384223; 21.03.2014
comment
Я отредактировал свой ответ. Я изменил раздел CDATA, чтобы он создавал элементы с префиксом xt. - person Chad Nouis; 21.03.2014
comment
Потрясающе. Спасибо миллион Чад Нуи :-) - person user3384223; 22.03.2014