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>