che in qualche modo non riesco a trovare alcuna risposta lavorare qui, ecco una soluzione reale che sarà in uscita la codifica desiderato nell'intestazione:
private void CreateXml()
{
XmlTextWriter xmlwriter = new XmlTextWriter("c:\\test.xml", Encoding.GetEncoding("iso-8859-1"));
XDocument xdoc = new XDocument(
new XElement("Test")
);
xdoc.Save(xmlwriter);
xmlwriter.Close();
}
Il motivo per cui si stanno ottenendo UTF -16 è che le stringhe sono codificate con UTF-16 in memoria e finché non si specifica una codifica per l'output dell'XML, esso sovrascriverà la codifica nell'intestazione XML in modo che corrisponda alla codifica effettiva utilizzata. L'utilizzo di un XmlTextWriter
è un metodo per specificare una codifica diversa.
È anche possibile lasciare scrivere a MemoryStream
e quindi trasformarlo nuovamente in string
se è necessario eseguire l'intera operazione in memoria.
Ciò significa che non è possibile specificare una codifica non valida utilizzando XDocument? Sto inoltrando XML a una terza parte che richiede la dichiarazione errata Xml version = "1.0" encoding = "ISO-8859-1"?>. –
Sono sicuro che puoi. Quale sistema è conforme all'uso corretto, al linguaggio e alle specifiche? – yfeldblum