nodo - Insertar elemento XML en documento xml usando Ant
manipular xml c# (1)
Quiero insertar un elemento xml en el documento xml:
XML de entrada: -
<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>
Salida 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>
Eso significa que estoy tratando de insertar uno más con espacios de nombres. Necesito insertar exactamente como este ..
Lo estoy intentando debajo
<xmltask source="abc.xml" dest="abc.xml">
<insert path="//*[local-name()=''resourceTypes'']"> <![CDATA[
<xa:resourceTypes id="3"/>
]]>
</insert>
</xmltask>
Sin embargo, está fallando.
Para que <insert>
funcione, explícitamente refiérase al espacio de nombres en el elemento. También <insert>
, de forma predeterminada, coloca nuevos elementos debajo de los existentes. El código a continuación cambia el valor predeterminado a 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>
El XML resultante, basado en el XML en la pregunta:
<?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>