2009-04-21 6 views
5

Chcę wyprowadzić moją właściwość InnerXml do wyświetlania na stronie internetowej. Chciałbym zobaczyć wcięcie różnych tagów. Czy istnieje prosty sposób na zrobienie tego?Czy istnieje szybki sposób sformatowania XmlDocument dla wyświetlania w języku C#?

+0

W czasach przechodzi przez i mamy teraz LINQ do XML, można użyć klasy '' XDocument' od nazw System.Xml.Linq' wydrukować swojej XML z wcięciem: 'XDocument.Parse (doc.InnerXml) '. – jwaliszko

Odpowiedz

18

Oto mała klasa, którą ułożyłem jakiś czas temu, aby zrobić dokładnie to.

Zakłada się, że pracujesz z XML w formacie ciągu znaków.

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

Jest jeszcze łatwiejsze, gdy dodasz go jako metodę rozszerzenia :) – Urda

+0

Kocham Cię !!!!!!!!!!!!!! – ChandlerPelhams

+0

Spot na, dzięki za kod :) –

1

Powinieneś być w stanie to zrobić z formatowaniem kodu. Najpierw będziesz musiał html kodować xml na stronę.

Google ma a nice prettifyer, który może wizualizować XML, a także kilka języków programowania.

Zasadniczo umieścić swój XML do wstępnego tagu jak poniżej:

<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

Skorzystaj z XML Web Server Control aby wyświetlić zawartość dokumentu XML na stronie internetowej.

EDYTOWANIE: Należy przekazać cały dokument XmlDocument do właściwości Document kontrolera XML Web Server, aby go wyświetlić. Nie musisz używać właściwości InnerXml.

0

Jeśli identyfikacja jest Twoją jedyną opcją i jeśli możesz pozwolić sobie na uruchomienie procesu Xternall, możesz przetworzyć plik xml za pomocą narzędzia konsoli HTML Tidy (~ 100K).

Kod jest:

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

Następnie można wyświetlać idented ciąg na stronie internetowej po pozbyć się znaków specjalnych.

Łatwo byłoby również utworzyć funkcję rekursywną, która sprawia, że ​​takie dane wyjściowe - po prostu powtarzaj węzły zaczynając od katalogu głównego i wprowadź kolejny krok rekurencji dla węzła potomnego, przekazując identyfikację jako parametr do każdego nowego wywołania rekursji.

0

Zapoznaj się z bezpłatnym Actipro CodeHighlighter dla ASP.NET - może wyświetlać starannie XML i inne formaty.

A może bardziej interesuje Cię faktyczne formatowanie pliku XML? Następnie spójrz na XmlTextWriter - możesz określić takie rzeczy jak Format (wcięcie lub nie) i poziom wcięcia, a następnie zapisz swój XML na przykład. a MemoryStream i odczytaj stamtąd ciąg znaków w celu wyświetlenia.

Marc

0

Użyć XmlTextWriter z XmlWriterSettings tak skonfigurowany, że wcięcie jest włączony. Możesz użyć StringWriter jako "tymczasowej pamięci", jeśli chcesz napisać wynikowy ciąg na ekranie.

Powiązane problemy