В предыдущем сообщении в блоге я описал использование 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.XmlUtilXmlUtil 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.XmlUtilXmlUtil 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.XmlUtilXmlUtil 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 . |
