groovy.xml.Dombuilder 删除了我需要的 silalone='yes'



,如下所示:

import groovy.xml.*

def xml = '''<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
    <Data>
        <![CDATA[ Test 123 ]]>
    </Data>
    '''
def document = DOMBuilder.parse( new StringReader( xml ) )
def root = document.documentElement
def result = XmlUtil.serialize( root )
println document.getXmlStandalone()
println result

结果是正确的,但是它可以打印整个内容,而没有独立的='是',我绝对需要进一步处理。我试图将其设置为真,但整个事情似乎并没有很好地实施...也许有人可以在这里帮助我?

我不相信您可以使用XmlUtil,因为它只是写出通用声明。

但是,您可以滚动自己的序列化:

import javax.xml.transform.*
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.StreamResult
import groovy.xml.*
def xml = '''<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
            |<Data>
            |    <![CDATA[ Test 123 ]]>
            |</Data>'''.stripMargin()
def document = DOMBuilder.parse( new StringReader( xml ) )
String result = TransformerFactory.newInstance().newTransformer().with {
    setOutputProperty( OutputKeys.INDENT, 'yes' )
    setOutputProperty( OutputKeys.STANDALONE, 'yes' )
    new StreamResult( new StringWriter() ).with { result ->
        DOMSource source = new DOMSource( document )
        transform( source, result )
        result.writer.toString()
    }
}
println result

打印:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Data>
    <![CDATA[ Test 123 ]]>
</Data>

最新更新