4

我正在努力使用库 anti-xml 将 XML 元素替换为另一个元素。例如,我有:

<root>
  <sub>
    <keep />
    <replace />
    <keeptoo />
  </sub>
</root>

和片段:

<inserted key="value">
  <foo>foo</foo>
  <bar>bar</bar>
</inserted>

我想制作:

<root>
  <sub>
    <keep />
    <inserted key="value">
      <foo>foo</foo>
      <bar>bar</bar>
    </inserted>      
    <keeptoo />
  </sub>
</root>

注意:<sub>必须保持孩子的顺序。

4

2 回答 2

3

首先我们定义根文档:

val root = 
<root>
  <sub>
    <keep />
    <replace />
    <keeptoo />
  </sub>
</root>.convert

val inserted =
  <inserted key="value">
    <foo>foo</foo>
    <bar>bar</bar>
 </inserted>.convert

然后我们得到元素:

val replace = root \\ 'replace

最后我们得到带有更新<replace/>节点的 xml:

replace.updated(0, inserted).unselect

如果我们得到多个<replace/>节点,我们将能够迭代replace更新每个节点。

于 2011-11-20T14:17:49.440 回答
2

您可以使用多个节点替换选定元素flatMap,例如replace.flatMap(_ => someListOfNodes).unselect

(很抱歉将其作为单独的答案,看来我无法评论现有答案。)

于 2012-03-16T14:34:29.700 回答