我想在groovy中构建一个w3c xml节点:
def CAR_RECORDS = '''<records>
<car name='HSV Maloo' make='Holden' year='2006'/>
<car name='P50' make='Peel' year='1962'/>
<car name='Royale' make='Bugatti' year='1931'/>
</records>
'''
def carRecords = new XmlParser().parseText(CAR_RECORDS)
但我使用MarkupBuilder的所有内容都是groovy.util.Node(carRecords是一个groovy.util.Node)。 是否有一种优雅的方式(不需要标准的java xml编码)来做到这一点?
我正在寻找的东西是这样的:
def carRecords = new W3CXmlParser().parseText(CAR_RECORDS)
或任何类似的......
谢谢!
答案 0 :(得分:2)
最简单的方法(伪代码):
MarkupBuilder
背景:从Groovy的角度来看,W3C DOM API非常不友好,这就是为什么MarkupBuilder
使用自己的类型。
这就是Groovy支持逆操作的原因:使用groovy.util.Node
将W3C DOM节点转换为DomToGroovy
答案 1 :(得分:1)
我可能有错误的结局,但这是你想要做的吗?:
import org.xml.sax.InputSource
import org.w3c.dom.Node
import javax.xml.parsers.DocumentBuilderFactory
def CAR_RECORDS = '''<records>
<car name='HSV Maloo' make='Holden' year='2006'/>
<car name='P50' make='Peel' year='1962'/>
<car name='Royale' make='Bugatti' year='1931'/>
</records>'''
Node carRecords = DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse( new InputSource( new StringReader( CAR_RECORDS ) ) )