2008-12-02 8 views
8

me gustaría crear un XmlDeclaration personalizada durante el uso de las clases XmlDocument/XmlDeclaration en C# .NET 2 o 3.¿Cómo agrego una XmlDeclaration personalizada con XmlDocument/XmlDeclaration?

Ésta es mi salida deseada (es una salida esperada por una aplicación de 3 ª parte):

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<?MyCustomNameHere attribute1="val1" attribute2="val2" ?> 
[ ...more xml... ] 

Usando las clases XmlDocument/XmlDeclaration, parece que sólo puedo crear una sola XmlDeclaration con un conjunto definido de parámetros:

XmlDocument doc = new XmlDocument(); 
XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "ISO-8859-1", null); 
doc.AppendChild(declaration); 

¿hay una clase distinta de la XmlDocument/XmlDeclaration que debería ¿Está buscando crear la XmlDeclaration personalizada? ¿O hay una forma con las clases XmlDocument/XmlDeclaration en sí?

Respuesta

19

Lo que está queriendo crear no es una declaración XML, sino una "instrucción de procesamiento". Se debe utilizar la clase XmlProcessingInstruction, no a la clase XmlDeclaration, por ejemplo .:

XmlDocument doc = new XmlDocument(); 
XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "ISO-8859-1", null); 
doc.AppendChild(declaration); 
XmlProcessingInstruction pi = doc.CreateProcessingInstruction("MyCustomNameHere", "attribute1=\"val1\" attribute2=\"val2\""); 
doc.AppendChild(pi); 
+0

@Bradley - Gracias! –

5

usted quiere añadir una XmlProcessingInstruction creado usando el CreateProcessingInstruction método de la XmlDocument.

Ejemplo:

XmlDocument document  = new XmlDocument(); 
XmlDeclaration declaration = document.CreateXmlDeclaration("1.0", "ISO-8859-1", "no"); 

string data = String.Format(null, "attribute1=\"{0}\" attribute2=\"{1}\"", "val1", "val2"); 
XmlProcessingInstruction pi = document.CreateProcessingInstruction("MyCustomNameHere", data); 

document.AppendChild(declaration); 
document.AppendChild(pi); 
+0

@Oposicional - Gracias de nuevo :) Bradely y ustedes dos lo clavaron. –

Cuestiones relacionadas