pretty c# xml linq-to-xml

pretty xml c#



Cómo imprimir<? Xml version="1.0"?> Usando XDocument (4)

¿Hay alguna manera de hacer que un XDocument imprima la versión xml cuando se utiliza el método ToString? Haz que muestre algo como esto:

<?xml version="1.0"?> <!DOCTYPE ELMResponse [ ]> <Response> <Error> ...

Tengo lo siguiente:

var xdoc = new XDocument(new XDocumentType("Response", null, null, "/n"), ...

que imprimirá esto que está bien, pero le falta la "versión de <xml" como se indicó anteriormente.

<!DOCTYPE ELMResponse [ ]> <Response> <Error> ...

Sé que puedes hacer esto al enviarlo manualmente a mi auto. Solo quería saber si era posible usando XDocument.


Código de solución VB.NET

Código

Dim _root As XElement = <root></root> Dim _element1 As XElement = <element1>i am element one</element1> Dim _element2 As XElement = <element2>i am element one</element2> _root.Add(_element1) _root.Add(_element2) Dim _document As New XDocument(New XDeclaration("1.0", "UTF-8", "yes"), _root) _document.Save("c:/xmlfolder/root.xml")

Nota de salida (por favor, abra la salida en el bloc de notas)

<?xml version="1.0" encoding="utf-8" standalone="yes"?> <root> <element1>i am element one</element1> <element2>i am element one</element2> </root>


Esta es la mejor manera y la más manejable:

var xdoc = new XDocument(new XElement("Root", new XElement("Child", "台北 Táiběi."))); string mystring; using(var sw = new MemoryStream()) { using(var strw = new StreamWriter(sw, System.Text.UTF8Encoding.UTF8)) { xdoc.Save(strw); mystring = System.Text.UTF8Encoding.UTF8.GetString(sw.ToArray()); } }

y lo digo simplemente porque puedes cambiar la codificación a cualquier cosa cambiando .UTF8 a .Unicode o .UTF32


Mediante el uso de XDeclaration. Esto agregará la declaración.

Pero con ToString() no obtendrá el resultado deseado.

Necesita usar XDocument.Save() con uno de sus métodos.

Muestra completa:

var doc = new XDocument( new XDeclaration("1.0", "utf-16", "yes"), new XElement("blah", "blih")); var wr = new StringWriter(); doc.Save(wr); Console.Write(wr.ToString());


Solo escribe esto

var doc = new XDocument ( new XDeclaration ("1.0", "utf-16", "no"), new XElement ("blah", "blih") );

Y obtienes

<?xml version="1.0" encoding="utf-16" standalone="no"?> <blah>blih</blah>