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/>最後に、更新されたnodeを含む 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 に答える