Как создать документ w3c в groovy?

#groovy #w3c

#groovy #w3c

Вопрос:

Я хочу создать XML-узел w3c в groovy :

 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.Узел (carRecords — это groovy.util.Узел).
Есть ли элегантный способ (который не требует стандартного java xml-кодирования) для этого?

Я ищу что-то, что будет выглядеть следующим образом:

 def carRecords = new W3CXmlParser().parseText(CAR_RECORDS)
  

или что-нибудь в этом роде…

Спасибо!

Ответ №1:

Самый простой способ (псевдокод):

  • Создайте древовидную структуру с MarkupBuilder
  • Преобразуйте это в строку с разметкой XML
  • Проанализируйте эту строку, чтобы получить узлы W3C DOM

Справочная информация: API W3C DOM очень недружелюбен с точки зрения Groovy, поэтому MarkupBuilder использует свой собственный тип.

Вот почему Groovy поддерживает обратную операцию: преобразуйте DOM-узлы W3C в groovy.util.Node s с помощью DomToGroovy

Смотрите также: Создание XML с помощью MarkupBuilder от Groovy

Ответ №2:

Возможно, у меня не тот конец флешки, но это то, что вы хотели сделать?:

 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 ) ) )