2009-04-21 10 views

risposta

18

Ecco una piccola lezione che ho messo insieme qualche tempo fa per fare esattamente questo.

Presume che si stia lavorando con l'XML in formato stringa.

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(); 
    } 
} 
+1

È ancora più semplice quando lo aggiungi come metodo di estensione :) – Urda

+0

Ti amo !!!!!!!!!!!!!! – ChandlerPelhams

+0

Spot on, grazie per il codice :) –

1

Si dovrebbe essere in grado di farlo con i programmi di formattazione del codice. Dovresti prima convertire in codice HTML l'xml nella pagina.

Google ha a nice prettifyer che è in grado di visualizzare XML e diversi linguaggi di programmazione.

In sostanza, mettere il vostro XML in un tag pre come questo:

<pre class="prettyprint"> 
    &lt;link href="prettify.css" type="text/css" rel="stylesheet" /&gt; 
    &lt;script type="text/javascript" src="prettify.js">&lt;/script&gt; 
</pre> 
0

Utilizzare il XML Web Server Control per visualizzare il contenuto di un documento XML in una pagina web.

MODIFICA: è necessario passare l'intero XmlDocument alla proprietà Document del controllo Web Server XML per visualizzarlo. Non è necessario utilizzare la proprietà InnerXml.

0

Se l'identificazione è la tua unica cocern e se puoi permetterti di avviare il processo xternall, puoi elaborare il file xml con lo strumento console HTML Tidy (~ 100K).

Il codice è:

tidy --input-xml y --output-xhtml y --indent "1" $(FilePath) 

Quindi è possibile visualizzare l'IDENT stringa sulla pagina web una volta si sbarazzarsi di caratteri speciali.

Sarebbe anche facile creare una funzione ricorsiva che produca tale output: è sufficiente iterare i nodi a partire dalla radice e immettere il successivo passo di ricorsione per il nodo figlio, passando l'identificazione come parametro per ogni nuova chiamata di ricorsione.

0

Controlla l'Actipro CodeHighlighter gratuito per ASP.NET: può visualizzare in modo ordinato XML e altri formati.

Oppure sei più interessato a formattare effettivamente il tuo XML? Quindi dai un'occhiata a XmlTextWriter: puoi specificare cose come Formato (indentazione o meno) e il livello di rientro e quindi scrivere il tuo XML ad es. un MemoryStream e leggerlo da lì in una stringa per la visualizzazione.

Marc

0

Utilizzare un XmlTextWriter con i XmlWriterSettings impostato in modo che il rientro sia abilitata. È possibile utilizzare StringWriter come "memoria temporanea" se si desidera scrivere la stringa risultante sullo schermo.

Problemi correlati