2009-04-21 7 views
5

Webページに表示するためのInnerXmlプロパティを出力したいとします。私は様々なタグのインデントを見たいと思います。これを行う簡単な方法はありますか?C#で表示するためのXmlDocumentを簡単に書式設定できますか?

+0

が経つと、私たちは今、XMLにLINQを持って、あなたはインデントを使用してXMLをプリントアウトする' System.Xml.Linq'名前空間から 'XDocument'クラスを使用することができます) '。 – jwaliszko

答えて

18

これはちょっと前にちょうどこれを行うためにまとめたクラスです。

XMLを文字列形式で処理していることを前提としています。 `XDocument.Parse(doc.InnerXml:倍

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

スポットあり、ありがとうございました:) –

1

コードフォーマッタでこれを実行できるはずです。まずxmlをページにhtmlエンコードする必要があります。

Googleは、XMLといくつかのプログラミング言語を視覚化できるa nice prettifyerを持っています。 Webページ上の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

基本的には、このようなpreタグにあなたのXMLを置きます。

EDIT:XML WebサーバーコントロールのDocumentプロパティにXmlDocument全体を渡して表示する必要があります。 InnerXmlプロパティを使用する必要はありません。

0

あなたが唯一のコクーンであり、xternallプロセスを起動する余裕があれば、HTML Tidyコンソールツール(〜100K)でxmlファイルを処理できます。

コードは次のとおりです。

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

あなたは特別な文字を取り除く一度、あなたはWebページ上idented文字列を表示することができます。

このような出力を行う再帰関数を作成することも簡単です。ルートから開始して子ノードの次の再帰ステップに入り、識別子を新しい新しい再帰呼び出しのパラメータとして渡すだけです。

0

無料のASP.NET用Actipro CodeHighlighterをチェックしてください。これはXMLと他のフォーマットをきちんと表示できます。

実際にXMLをフォーマットすることにもっと興味がありますか?次に、XmlTextWriterを見てみましょう.Format(インデントの有無)やインデントレベルなどを指定してから、XMLを書き出すことができます。 MemoryStreamを読み込んでそこから文字列に戻して表示します。設定XmlWriterSettingsと

マルク・

0

使ってXmlTextWriterはので、インデントが有効になっています。結果の文字列を画面に書き込む場合は、StringWriterを「一時記憶域」として使用できます。

関連する問題