使用编码UTF-8而不使用BOM groovy的xml

使用编码UTF-8而不使用BOM groovy的xml,groovy,Groovy,您好,我需要使用MarkupBuilder类在groovy中创建一个XML文件,该XML文件应该具有编码utf-8而不包含BOM 这是我生成markupbuilder并添加编码的代码 def textXML = new StringWriter() def builder = new groovy.xml.MarkupBuilder(textXML) builder.setDoubleQuotes(false) builder.setOmitNullAttribu

您好,我需要使用MarkupBuilder类在groovy中创建一个XML文件,该XML文件应该具有编码utf-8而不包含BOM

这是我生成markupbuilder并添加编码的代码

    def textXML = new StringWriter()
    def builder = new groovy.xml.MarkupBuilder(textXML)
    builder.setDoubleQuotes(false)
    builder.setOmitNullAttributes(true)
    builder.setOmitEmptyAttributes(true)
    builder.mkp.xmlDeclaration(version: "1.0", encoding: "utf-8")
    //some more code
此代码创建xml文件

  def file = new File("fileXml.xml")
  file << textXML
def file=新文件(“fileXml.xml”)
文件UTF-8 BOM(字节顺序标记)始终是文件的前三个字节。您可以简单地删除它们

我会这样做:

def textXML = new StringWriter()
def builder = new groovy.xml.MarkupBuilder(textXML)
builder.setDoubleQuotes(false)
builder.setOmitNullAttributes(true)
builder.setOmitEmptyAttributes(true)
builder.mkp.xmlDeclaration(version: "1.0", encoding: "utf-8")

def xmlbytes = textXML.toString().getBytes().flatten()
xmlbytes.remove(0)
xmlbytes.remove(0)
xmlbytes.remove(0)

def file = new File("fileXml.xml")
file << xmlbytes
def textXML=new StringWriter()
def builder=new groovy.xml.MarkupBuilder(textXML)
builder.setDoubleQuotes(false)
builder.setOmitNullAttributes(true)
builder.setommitemptyattributes(true)
builder.mkp.xml声明(版本:“1.0”,编码:“utf-8”)
def xmlbytes=textXML.toString().getBytes().flant()
xmlbytes.remove(0)
xmlbytes.remove(0)
xmlbytes.remove(0)
def file=新文件(“fileXml.xml”)

文件所以我的情况略有不同。我正在尝试使用MarkupBuilder编写XML,并显示BOM(新的客户需求)。到目前为止,我尝试的所有方法都只生成一个没有BOM表的纯文本XML文件。以下是我的示例代码:

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def xml = new MarkupBuilder( writer )
xml.setDoubleQuotes(false)
xml.setOmitNullAttributes(true)
xml.setOmitEmptyAttributes(true)
xml.mkp.xmlDeclaration(version: "1.0", encoding: "utf-8")

xml.quote() {
 xml.quote_details() {
  xml.detail() {
   xml.quoteId('Q1339', type:'FCL')
  }
 }
}
new FileOutputStream('UTF_test.xml').withWriter('UTF-8') { w ->
  w.write('ABC')
  w << writer
}
import groovy.xml.MarkupBuilder
def writer=new StringWriter()
def xml=新的MarkupBuilder(编写器)
setDoubleQuotes(false)
setOmitNullAttributes(true)
setOmitEmptyAttributes(true)
xml.mkp.xml声明(版本:“1.0”,编码:“utf-8”)
xml.quote(){
xml.quote_details(){
xml.detail(){
quoteId('Q1339',类型:'FCL')
}
}
}
新的FileOutputStream('UTF_test.xml')。withWriter('UTF-8'){w->
w、 写('ABC')
W