Sto scrivendo un wrapper per un'API XML enterprise braindead. Ho un XDocument che ho bisogno di trasformare in una stringa. A causa del fatto che il loro parser XML è così schizzinoso che non può gestire anche gli spazi bianchi tra i nodi XML, la dichiarazione di documento deve essere esattamente:XDocument to string: Come omettere la codifica nella dichiarazione?
<?xml version="1.0"?>
Tuttavia, il metodo di XDocument.Save() sempre aggiunge una codifica attribuire a tale dichiarazione:
<?xml version="1.0" encoding="utf-16"?>
Con nell'ultima ora speso su Google e Stack cercando il modo migliore per generare la stringa XML, il meglio che posso fare è:
string result = xmlStringBuilder.ToString().Replace(@"encoding=""utf-16"", string.Empty));
ho provato
xdoc.Declaration = new XDeclaration("1.0", null, null);
e che non riescono a stabilire la dichiarazione in XDocument il modo in cui lo voglio; tuttavia, quando chiamo il metodo Save(), l'attributo encoding viene magicamente riportato indietro, indipendentemente da quale percorso vada (usando TextWriter, aggiungendo XmlWriterSettings, ecc.).
Qualcuno ha un modo migliore per farlo, oppure il mio codice è destinato per sempre a contenere un paragrafo di ranting nei commenti sopra l'orribile stringa sostituita?