0

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>

我正在尝试在我的 ant 任务中完成上述任务,但我似乎找不到办法做到这一点,这就是我目前正在做的事情,

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

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

4

1 回答 1

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.*" />
于 2012-01-13T16:19:21.093 回答