2012-01-11 1 views
0

Возможно ли, чтобы задача xml копировала значение одного узла в другой узел для каждого элемента в списке?Скопировать одно значение другому в xmltask

Источник XML:

<a> 
<b> 
    <c1>foo</c1> 
    <c2></c2> 
</b> 
<b> 
    <c1>bar</c1> 
    <c2></c2> 
</b> 
... 
</a> 

Назначение XML:

<a> 
<b> 
    <c1>foo</c1> 
    <c2>foo</c2> 
</b> 
<b> 
    <c1>bar</c1> 
    <c2>bar</c2> 
</b> 
... 
</a> 

Я пытаюсь выполнить выше в моем муравей задачи, но я con't показаться, чтобы найти способ сделать это , вот что я делал до сих пор,

<target name="mergefile">  
    <!-- Read the source into a buffer --> 
    <xmltask source="source.xml" clearBuffers="list"> 
     <copy path="/a" buffer="list" append="true"/> 
    </xmltask> 

    <!-- Write them to the output --> 
    <xmltask source="destination.xml" dest="destination.xml" 
     outputter="simple"> 
     <!-- First clear all the old paths. --> 
     <remove path="https://stackoverflow.com/a/b"/> 
    <!-- Then add the resolved ones. --> 
     <paste path="/a" buffer="list"></paste> 
      <!-- Copy the value over? --> 
     <replace path="a/b/c2/text()" withText="No Idea"/> 
    </xmltask> 
</target> 

Любые идеи о том, как скопировать значение от одного узла к другому для всех Elemen ts в списке?

+0

ли destination.xml изначально пустой в этом примере? –

+0

@Brian У этого есть '...' Я пытаюсь заменить содержимое узла 'a' на пути из source.xml. – Andrew

ответ

0

Как, я думаю, это обычно так, но написать мою собственную задачу было единственным способом, которым я мог это сделать.

@Override 
public void execute() throws BuildException { 
    //Read file line by line, regex test on each line, 
    //matches get written back twice. 
} 

Тогда называя это,

<copyregmatch file="myfile.xml" regex=".*replace.*" />