0

それぞれが foo または bar である可能性のあるもののリストがあります。次のようなxmlを作成したいと思います。

<rdf:RDF>
  <foo id="1">
  <foo id="2">
  <bar id="3">
</rdf:RDF>

だから私はこれまでに得ました:

MarkupBuilder xml = new MarkupBuilder(writer)
  xml.'rdf:RDF' (nsmap) { }

しかし今、私は立ち往生しています。xml.'rdf:RDF' (nsmap) { }そのクロージャー内で、自分のリストをどのように反復処理しますか? そのイテレータ内で、必要に応じて foo または bar 要素を吐き出すにはどうすればよいですか?

4

3 に答える 3

2

あなたが考えるかもしれないように、それはより簡単です。xml クロージャにループを含め、ループにマークアップを含めます。このスクリプト...

import groovy.xml.MarkupBuilder

things = ['foo','foo','bar']
writer = new StringWriter()

xml = new MarkupBuilder(writer)
xml.'rdf:RDF' {
    things.eachWithIndex {thing,index ->
        "$thing" id:index+1
    }
}

println writer

... 次の出力が生成されます。

<rdf:RDF>
  <foo id='1' />
  <foo id='2' />
  <bar id='3' />
</rdf:RDF>
于 2014-05-06T08:03:26.560 に答える
2

どうぞ:

import groovy.xml.MarkupBuilder
import org.custommonkey.xmlunit.*

def data = [foo:1,bar:2,baz:3]

def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.'rdf:RDF' {
    data.each { e ->
        "$e.key"(id:e.value)
    }
}
println writer
于 2014-05-06T07:55:52.253 に答える