Я пытаюсь создать 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, поэтому не могу применить решение из другого потока.





Я думаю, что использование XDocument сбивает вас с толку — решение, подробно описанное в возможный дубликат, все равно должно применяться. Но чтобы было ясно,
Вместо
doc2.Save(outFile)
пытаться
using (var writer = new XmlTextWriter(outFile, new UTF8Encoding(false)))
{
doc2.Save(writer);
}
Возможный дубликат XDocument: сохранение XML в файл без спецификации