Tengo una cadena XML como tal:
<?xml version='1.0'?><response><error code='1'> Success</error></response>
No hay líneas entre un elemento y otro, y por lo tanto es muy difícil de leer. Quiero una función que formatee la cadena anterior:
<?xml version='1.0'?>
<response>
<error code='1'> Success</error>
</response>
Sin recurrir a escribir manualmente la función de formato, ¿hay alguna biblioteca .Net o fragmento de código que pueda usar de forma informal?
c#
xml
formatting
Graviton
fuente
fuente
XmlDocument
cuál descalificaría la respuesta más votada en esta pregunta.Respuestas:
Use
XmlTextWriter
...fuente
Tendrá que analizar el contenido de alguna manera ... Creo que usar LINQ es la forma más fácil de hacerlo. Nuevamente, todo depende de su escenario exacto. Aquí hay un ejemplo de trabajo usando LINQ para formatear una cadena XML de entrada.
[el uso de declaraciones se omite por brevedad]
fuente
doc.Declaration.ToString() + doc.ToString()
o mediante el uso de endoc.Save
lugar dedoc.ToString
. Vea este enlace para más detalles.Este, de kristopherjohnson, es mucho mejor:
Menos líneas de código
fuente
<?xml version="1.0" encoding="UTF-8" ?>
línea en la parte superior) y funcionó bien.La solución simple que funciona para mí:
fuente
Verifique el siguiente enlace:
Cómo imprimir XML bonito(Desafortunadamente, el enlace ahora devuelve 404 :()El método en el enlace toma una cadena XML como argumento y devuelve una cadena XML bien formada (sangrada).
Acabo de copiar el código de muestra del enlace para que esta respuesta sea más completa y conveniente.
fuente
<?xml...?>
línea. Esta respuesta obtiene lo que originalmente tenía en mente. Lo único negativo sería que preferiría tabulaciones en lugar de espacios utilizados de forma nativa. Me puseIndentation = 1
yIndentChar = '\t'
para obtener exactamente lo que quería.(this String XML)
gran obra.Lo intenté:
Está funcionando bien como se esperaba.
fuente
.NET 2.0 ignorando la resolución de nombres y con la disposición adecuada de recursos, sangría, preservar espacios en blanco y codificación personalizada :
Uso:
fuente
si carga el XMLDoc, estoy bastante seguro de que la función .ToString () posee una sobrecarga para esto.
¿Pero es esto para depurar? La razón por la que se envía así es para ocupar menos espacio (es decir, eliminar espacios en blanco innecesarios del XML).
fuente
Salida Pretty XML personalizable con declaración XML UTF-8
La siguiente definición de clase proporciona un método simple para convertir una cadena XML de entrada en XML formateado de salida con la declaración xml como UTF-8. Admite todas las opciones de configuración que ofrece la clase XmlWriterSettings .
Posibilidades de mejora adicional: -
GetPrettyXml(XmlDocument doc, XmlWriterSettings settings)
podría crear un método adicional que permita a la persona que llama personalizar la salida.GetPrettyXml(String rawXml)
podría agregar un método adicional que admita el análisis de texto sin formato, en lugar de que el cliente use XmlDocument. En mi caso, necesitaba manipular el XML usando XmlDocument, por lo tanto, no agregué esto.Uso:
fuente