2011-05-26 29 views
0

我想在常規建立一個W3C XML節點:如何在groovy中構建一個w3c文檔?

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) 

或那種事情......

謝謝!

回答

2

最簡單的方法(僞代碼):

  • 創建一個樹形結構MarkupBuilder
  • 轉換是與XML標記
  • 的字符串解析字符串得到W3C DOM節點

背景:從Groovy的角度來看,W3C DOM API非常不友好,這就是爲什麼MarkupBuilder使用它自己的類型。

這就是爲什麼Groovy支持反向操作:轉換W3C DOM節點使用DomToGroovy

也見groovy.util.Node S:Creating XML using Groovy's MarkupBuilder

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))) 
相關問題