2009-04-21 2 views
5

Я хочу вывести свое свойство InnerXml для отображения на веб-странице. Я хотел бы видеть отступы различных тегов. Есть простой способ сделать это?Есть ли быстрый способ форматирования XmlDocument для отображения на C#?

+0

Как раз проходит, и мы имеем LINQ к XML теперь вы можете использовать 'класс XDocument' из' System.Xml.Linq' имен, чтобы распечатать ваш XML с отступом: 'XDocument.Parse (doc.InnerXml) '. – jwaliszko

ответ

18

Вот небольшой класс, который я собрал некоторое время назад, чтобы сделать именно это.

Предполагается, что вы работаете с XML в строковом формате.

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

Это еще проще, если добавить его в качестве метода расширения :) – Urda

+0

Я люблю тебя !!!!!!!!!!!!!! – ChandlerPelhams

+0

Spot on, спасибо за код :) –

1

Вы должны быть в состоянии сделать это с помощью codeformatters. Вы должны сначала html закодировать xml на странице.

Google имеет a nice prettifyer, который способен визуализировать XML, а также несколько языков программирования.

В принципе, поставить XML в предварительно тэгом как это:

<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

Используйте XML Web Server Control для отображения содержимого XML-документа на веб-странице.

EDIT: вы должны передать весь XmlDocument в свойство Document элемента управления веб-сервером XML, чтобы отобразить его. Вам не нужно использовать свойство InnerXml.

0

Если идентификация является вашим единственным кокаром, и если вы можете позволить себе запустить процесс xternall, вы можете обработать файл xml с помощью консольного инструмента HTML Tidy (~ 100K).

Код:

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

Затем вы можете отобразить idented строку на веб-странице, как только вы избавитесь от специальных символов.

Было бы также легко создать рекурсивную функцию, которая делает такой вывод - просто перебирать узлы, начиная с корня, и вводить следующий шаг рекурсии для дочернего узла, передавая идентификацию в качестве параметра для каждого нового вызова рекурсии.

0

Ознакомьтесь с бесплатным Actipro CodeHighlighter для ASP.NET - он может отображать XML и другие форматы.

Или вас больше интересует фактическое форматирование вашего XML? Затем взгляните на XmlTextWriter - вы можете указать такие вещи, как Format (indenting or not) и уровень отступа, а затем выписать свой XML, например. MemoryStream и прочитайте его обратно оттуда в строку для отображения.

Марк

0

Используйте XmlTextWriter с XmlWriterSettings, установленными таким образом, что отступы включен. Вы можете использовать StringWriter как «временное хранилище», если вы хотите записать полученную строку на экран.

Смежные вопросы