2011-12-17 3 views
6

Ho bisogno di avere la codifica XML e la versione nella parte superiore del mio documento XML che sto facendo con XDocument.Ottieni UTF-8 in maiuscolo usando XDocument

Ho questo, ma è in minuscolo e deve essere in maiuscolo.

Cosa devo fare?

Dichiaro un nuovo documento XML utilizzando la classe XDocument denominata "doc".

Ho salvato questo file su doc.Save();.

ho provato:

  • doc.Declaration.Encoding.ToUpper();
  • Dichiarazione di una nuova XDeclaration
  • Digitando la codifica in maiuscolo e impostando il mio doc.Declaration alla mia XDeclaration.

Passa ancora in minuscolo.

+0

Perché avete bisogno in maiuscolo? Non dovrebbe fare alcuna differenza con un parser XML conforme allo standard. – Oded

+1

Sono d'accordo, tuttavia non dipende da me, deve essere in maiuscolo. Ho provato "doc.Declaration.Version.ToUpper", dichiarando una nuova XDeclaration, scrivendo la versione in maiuscolo e impostando la mia "doc.Declaration" sulla mia XDeclaration. Passa ancora in minuscolo, sto usando doc.Save(); grazie – JMK

+0

Modifica la tua domanda e aggiornala con i dettagli che hai inserito nel tuo commento. Questi possono essere trascurati da persone che leggono la tua domanda altrimenti. – Oded

risposta

4

È possibile creare personalizzato XmlTextWriter, ad es .:

public class CustomXmlTextWriter : XmlTextWriter 
{ 
    public CustomXmlTextWriter(string filename) 
     : base(filename, Encoding.UTF8) 
    { 

    } 

    public override void WriteStartDocument() 
    { 
     WriteRaw("<?xml VERSION=\"1.0\" ENCODING=\"UTF-8\"?>"); 
    } 

    public override void WriteEndDocument() 
    { 
    } 
} 

quindi utilizzarlo:

using (var writer = new CustomXmlTextWriter("file.xml")) 
{ 
    doc.Save(writer); 
} 
+0

Perfetto, grazie mille! – JMK

+0

@Heisenburg, prego! –

+2

È molto lontano dal perfetto. Non è nemmeno XML. XML consente (preferibilmente preferisce) il nome della codifica in maiuscolo, ma le parole chiave "codifica" e "versione" devono essere minuscole. –