Генерация XML в UTF-8 без спецификации - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь сгенерировать сообщение XML только с кодировкой UTF-8:

Dim doc As System.Xml.XmlDataDocument = New System.Xml.XmlDataDocument(ds)
Dim n1 As System.Xml.XmlNode = doc.FirstChild



Dim doc2 As System.Xml.XmlDocument = New System.Xml.XmlDocument
doc2.LoadXml(n1.FirstChild.OuterXml)



doc2.InsertBefore(doc2.CreateXmlDeclaration("1.0", "utf-8", "yes"), doc2.FirstChild)
doc2.Save(outFile)

Однако при каждом создании файла кодировка указывается как «Подпись UTF-8». Я попытался удалить первые три символа из сообщения, используя что-то вроде:

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

Что тоже не удалось.

Существует ли более эффективный метод обеспечения того, чтобы кодирование оставалось только для "UTF-8"?

Я не использую xDocument, поэтому не могу применить решение из другого потока.

1 Ответ

0 голосов
/ 07 марта 2019

Я думаю, что использование XDocument сбивает вас с толку - решение, описанное в возможном дубликате , все равно должно применяться. Но чтобы быть ясно,

Вместо

doc2.Save(outFile)

1009 * попробовать *

using (var writer = new XmlTextWriter(outFile, new UTF8Encoding(false)))
{
    doc2.Save(writer);
}
...