使用xmltask将一个值复制到另一个值

时间:2012-01-11 21:04:27

标签: parsing ant xmltask

xml任务是否可以将列表中每个元素的一个节点的值复制到另一个节点?

源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>

我正在尝试在我的蚂蚁任务中完成上述任务,但我似乎无法找到方法去做,这就是我到目前为止所做的事情,

<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="/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>

是否知道如何将值从一个节点复制到下一个节点中的所有元素?

1 个答案:

答案 0 :(得分: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.*" />