Quiero mostrar mi propiedad InnerXml para visualizarla en una página web. Me gustaría ver una sangría de varias etiquetas. ¿Hay una forma fácil de hacer esto?¿Existe una manera rápida de formatear un XmlDocument para mostrar en C#?
Respuesta
Aquí hay una pequeña clase que reuní hace algún tiempo para hacer exactamente esto.
Supone que está trabajando con XML en formato de cadena.
public static class FormatXML
{
public static string FormatXMLString(string sUnformattedXML)
{
XmlDocument xd = new XmlDocument();
xd.LoadXml(sUnformattedXML);
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
XmlTextWriter xtw = null;
try
{
xtw = new XmlTextWriter(sw);
xtw.Formatting = Formatting.Indented;
xd.WriteTo(xtw);
}
finally
{
if(xtw!=null)
xtw.Close();
}
return sb.ToString();
}
}
Es aún más fácil cuando lo agrega como un método de extensión :) – Urda
¡Te quiero !!!!!!!!!!!!!! – ChandlerPelhams
Spot on, gracias por el código :) –
Debería poder hacer esto con formateadores de código. Tendría que html codificar el xml en la página primero.
Google tiene a nice prettifyer que es capaz de visualizar XML así como varios lenguajes de programación.
Básicamente, poner el XML en una etiqueta pre así:
<pre class="prettyprint">
<link href="prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="prettify.js"></script>
</pre>
Uso del XML Web Server Control para mostrar el contenido de un documento XML en una página web.
EDITAR: Debe pasar todo XmlDocument a la propiedad de documento del control del servidor web XML para mostrarlo. No necesita usar la propiedad InnerXml.
Si la identación es su única garantía y si puede permitirse ejecutar el proceso xternall, puede procesar el archivo xml con la herramienta de consola HTML Tidy (~ 100K).
El código es:
tidy --input-xml y --output-xhtml y --indent "1" $(FilePath)
A continuación, puede mostrar cadena idented en la página web una vez que deshacerse de los caracteres especiales.
También sería fácil crear una función recursiva que produzca dicha salida: simplemente itere los nodos comenzando desde la raíz e ingrese el próximo paso de recursión para el nodo secundario, pasando la identación como parámetro a cada nueva llamada de recursión.
Echa un vistazo gratis al Actipro CodeHighlighter para ASP.NET - puede mostrar claramente XML y otros formatos.
¿O está más interesado en realmente formatear su XML? Luego eche un vistazo a XmlTextWriter: puede especificar elementos como Formato (sangrando o no) y el nivel de sangría, y luego escriba su XML a, p. un MemoryStream y leerlo desde allí en una cadena para mostrar.
Marc
Utilice un XmlTextWriter con los XmlWriterSettings configurado para que la sangría está activado. Puede usar un StringWriter como "almacenamiento temporal" si desea escribir la cadena resultante en la pantalla.
- 1. C manera más rápida de verificar si existe un directorio
- 2. ¿Existe alguna manera rápida de mostrar el código de un método declarado en Scala Console?
- 3. C# formatear un MessageBox
- 4. ¿Cómo deserializar XMLDocument para objetar en C#?
- 5. ¿Una buena manera de hacer una división rápida en C++?
- 6. inserción XmlDocument en un nodo XmlDocument
- 7. ¿Existe alguna manera rápida de eliminar un valor específico de una matriz en Javascript?
- 8. ¿Cómo formatear una marca de tiempo java.sql para mostrar?
- 9. ¿La forma más rápida de formatear un número de teléfono en C#?
- 10. ¿Existe alguna manera más rápida de verificar si existe una página web externa?
- 11. ¿Existe una forma rápida de dibujar texto en WPF
- 12. ¿Cómo formatear una columna DBGrid para mostrar dos lugares decimales?
- 13. Formatear oraciones en una cadena usando C#
- 14. C# XmlDocument SelectNodes
- 15. ¿Existe alguna manera fácil de calcular y formatear los intervalos de hora/fecha en Java?
- 16. eliminar atributo si existe desde xmldocument
- 17. manera más rápida de encontrar cadena en C#?
- 18. ¿Existe alguna manera elegante de establecer un valor predeterminado para una propiedad en C#?
- 19. ¿Existe una manera simple de convertir una marca de tiempo ISO8601 en un formato NSDate?
- 20. ¿Existe una manera eficiente y rápida de cargar archivos grandes json en python?
- 21. ¿Forma rápida de determinar si existe un PID en (Windows)?
- 22. Creando un XmlNode/XmlElement en C# sin un XmlDocument?
- 23. manera más rápida para reemplazar cadena en una plantilla
- 24. manera más rápida para ordenar una lista en Java
- 25. ¿Existe una "forma más rápida" de construir cadenas en Java?
- 26. ¿Formatear un flotador para mostrar en una cadena con dos dígitos?
- 27. Manera rápida de implementar la convolución 2D en C
- 28. ¿Hay una manera rápida y fácil en OpenCV para calcular el gradiente de una imagen?
- 29. ¿Existe alguna manera rápida de cambiar los tabindex en un formulario con muchos controles?
- 30. XMLDocument -> Byte [] ... ¿cómo volver a XMLDocument?
Como que pasa el tiempo y tenemos LINQ to XML ahora, se puede usar '' clase XDocument' de System.Xml.Linq' espacio de nombres para imprimir su XML con muesca: 'XDocument.Parse (doc.InnerXml) '. – jwaliszko