2011-12-17 16 views
6

Necesito tener la codificación XML y la versión en la parte superior de mi documento XML que estoy haciendo con XDocument.Obtenga UTF-8 en mayúsculas con XDocument

Tengo esto pero está en minúsculas, y debe estar en mayúsculas.

¿Qué debo hacer?

Declaro un nuevo documento XML usando la clase XDocument llamada 'doc'.

Guardo esto en un archivo usando doc.Save();.

que he intentado:

  • doc.Declaration.Encoding.ToUpper();
  • Declarar una nueva XDeclaration
  • Escribir la codificación en mayúsculas y el establecimiento de mi doc.Declaration a mi XDeclaration.

Todavía aparece en minúsculas.

+0

¿Por qué lo necesita en mayúsculas? No debe hacer ninguna diferencia en un analizador XML conforme a las normas. – Oded

+1

Estoy de acuerdo, sin embargo, no depende de mí, debe estar en mayúsculas. He intentado "doc.Declaration.Version.ToUpper", declarando una nueva XDeclaration, escribiendo la versión en mayúsculas y estableciendo mi "doc.Declaration" en mi XDeclaration. Todavía aparece en minúsculas, estoy usando doc.Save(); gracias – JMK

+0

Por favor edite su pregunta y actualícela con los detalles que acaba de poner en su comentario. Esto puede ser pasado por alto por personas que leen tu pregunta de otra manera. – Oded

Respuesta

4

Se pueden crear a medida XmlTextWriter, por ejemplo .:

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() 
    { 
    } 
} 

luego usarlo:

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

Perfecto, muchas gracias! – JMK

+0

@Heisenburg, ¡De nada! –

+2

Está muy lejos de ser perfecto. Ni siquiera es XML. XML permite (de hecho prefiere) que el nombre de la codificación esté en mayúsculas, pero las palabras clave "codificación" y "versión" deben estar en minúsculas. –