В предыдущем сообщении в блоге я описал использование XmlNodePrinter для представления XML, проанализированного с XmlParser, в хорошем формате для стандартного вывода, в виде строки Java и в новом файле. Поскольку XmlNodePrinter
работает с экземплярами groovy.util.Node , он хорошо работает с XmlParser
, но не очень хорошо работает с XmlSlurper, поскольку XmlSlurper работает с экземплярами groovy.util.slurpersupport.GPathResult, а не с экземплярами groovy.util.Node
. В этом посте рассказывается о том, как groovy.xml.XmlUtil можно использовать для представления объектов GPathResult
результате преобразования XML в стандартный вывод, в виде строки Java и в новый файл.
В первом листинге кода в этом посте демонстрируется использование XML- XmlSlurper
с использованием XmlSlurper
и запись этого GPathResult
в стандартный вывод с использованием XmlUtil
serialize (GPathResult, OutputStream) XmlUtil и дескриптора System.out .
slurpAndPrintXml.groovy: запись XML в стандартный вывод
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
#!/usr/bin/env groovy // slurpAndPrintXml.groovy // // Use Groovy's XmlSlurper to "slurp" provided XML file and use XmlUtil to write // XML content out to standard output. if (args.length < 1 ) { println "USAGE: groovy slurpAndPrint.xml <xmlFile>" } String xmlFileName = args[ 0 ] xml = new XmlSlurper().parse(xmlFileName) import groovy.xml.XmlUtil XmlUtil xmlUtil = new XmlUtil() xmlUtil.serialize(xml, System.out) |
В следующем листинге кода демонстрируется использование XmlUtil
serialize (GPathResult) XmlUtil для сериализации GPathResult
в String
Java.
slurpAndSaveXml.groovy: запись XML в строку Java
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
#!/usr/bin/env groovy // slurpXmlToString.groovy // // Use Groovy's XmlSlurper to "slurp" provided XML file and use XmlUtil to // write the XML content to a String. if (args.length < 1 ) { println "USAGE: groovy slurpAndPrint.xml <xmlFile>" } String xmlFileName = args[ 0 ] xml = new XmlSlurper().parse(xmlFileName) import groovy.xml.XmlUtil XmlUtil xmlUtil = new XmlUtil() String xmlString = xmlUtil.serialize(xml) println "String:\n${xmlString}" |
Третий листинг кода демонстрирует использование XmlUtil
serialize (GPathResult, Writer) в GPathResult
для записи GPathResult
представляющего GPathResult
XML, в файл через экземпляр FileWriter .
slurpAndPrintXml.groovy: запись XML в файл
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/usr/bin/env groovy // slurpAndSaveXml.groovy // // Uses Groovy's XmlSlurper to "slurp" XML and then uses Groovy's XmlUtil // to write slurped XML back out to a file with the provided name. The // first argument this script expects is the path/name of the XML file to be // slurped and the second argument expected by this script is the path/name of // the file to which the XML should be saved/written. if (args.length < 2 ) { println "USAGE: groovy slurpAndSaveXml.groovy <xmlFile> <outputFile>" } String xmlFileName = args[ 0 ] String outputFileName = args[ 1 ] xml = new XmlSlurper().parse(xmlFileName) import groovy.xml.XmlUtil XmlUtil xmlUtil = new XmlUtil() xmlUtil.serialize(xml, new FileWriter( new File(outputFileName))) |
Примеры в этом посте продемонстрировали написание / сериализацию XML, GPathResult
объекты GPathResult
с помощью методов XmlUtil
. Класс XmlUtil
также предоставляет методы для сериализации экземпляров XmlParser
предоставляет XmlParser
. Три метода, принимающие экземпляр Node
, аналогичны трем методам выше для экземпляров GPathResult
. Точно так же другие методы XmlUtil
обеспечивают аналогичную поддержку XML, представленного в виде экземпляров org.w3c.dom.Element , Java String
и groovy.lang.Writable .
Класс XmlNodePrinter
в моем предыдущем посте в блоге, можно использовать для сериализации проанализированного XML- XmlParser
представленного в виде Node
. Класс XmlUtil
также можно использовать для сериализации проанализированного XML- XmlParser
представленного в виде Node
но дает дополнительное преимущество, заключающееся в возможности сериализации XmlSlurper
— XmlSlurper
с блочностью, представленного в виде GPathResult
.
Ссылка: | Написание содержимого Groovy groovy.util.slurpersupport.GPathResult (XmlSlurper) в виде XML от нашего партнера по JCG Дастина Маркса из блога Inspired by Actual Events . |