Нежелательные дополнительные переводы строк при разборе XML на объект Document с groovy. xml .DOMBuilder.parseText - PullRequest
0 голосов
/ 08 апреля 2020

Я использую класс groovy.xml.DOMBuilder для анализа XML в Document объект. К сожалению, методы parseText добавляют пустую строку после каждого перевода строки. Как это поведение может быть изменено таким образом, что не добавляются пустые строки.

В следующем блоке кода показано содержимое файла XML, который обрабатывается DOMBuilder

<?xml version="1.0" encoding="UTF-8"?>
<test>
  <h1>tag</h1>
</test>

. Консольный вывод объекта Document выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?><test>

  <h1>tag</h1>

</test>

Откуда берутся пустые строки?

Вот небольшой скрипт groovy, который производит вывод:

import groovy.xml.DOMBuilder
import groovy.xml.XmlNodePrinter
import groovy.xml.XmlUtil
import org.w3c.dom.Document
import java.nio.file.Paths

class XMLParser {
    static void main(String[] args) {
        println "Arguments: ${args}"
        File xml = Paths.get(args[0]).toFile()
        println "XML file object: ${xml}"

        String xmlContent = xml.getText('UTF-8')
        println "XML file content before parsing: ${xmlContent}"

        Document doc = DOMBuilder.newInstance().parseText(xmlContent)
        println "Document object: ${doc.documentElement}"

        println "XmlNodePrinter: "
        new XmlNodePrinter(preserveWhitespace:false).print(doc.documentElement)

        String result = XmlUtil.serialize(doc.documentElement)
        println "Serialized pom: ${result}"
    }
}
...