簡體   English   中英

有沒有一種快速的方法來格式化XmlDocument以便在C#中顯示?

[英]Is there a quick way to format an XmlDocument for display in C#?

我想輸出我的InnerXml屬性以在網頁中顯示。 我想看看各種標簽的縮進。 是否有捷徑可尋?

這是我前一段時間拼湊起來做的一個小課程。

它假定您使用字符串格式的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();
    }
}

您應該可以使用代碼格式化程序執行此操作。 您必須首先將xml編碼到頁面中。

谷歌有一個很好的預處理器 ,能夠可視化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>

使用XML Web服務器控件網頁上顯示xml文檔的內容。

編輯:您應該將整個XmlDocument傳遞給XML Web服務器控件的Document屬性以顯示它。 您不需要使用InnerXml屬性。

如果identation是您唯一的cocern,並且您可以負擔得起啟動xternall進程,則可以使用HTML Tidy控制台工具(~100K)處理xml文件。

代碼是:

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

然后,一旦擺脫了特殊的字符,就可以在網頁上顯示標題字符串。

創建遞歸函數也很容易做出這樣的輸出 - 簡單地從根開始迭代節點並進入子節點的下一個遞歸步驟,將identation作為參數傳遞給每個新的遞歸調用。

查看免費的Actipro CodeHighlighter for ASP.NET - 它可以整齊地顯示XML和其他格式。

或者您對實際格式化XML更感興趣? 然后看一下XmlTextWriter - 你可以指定像Format(縮進或不縮進)和縮進級別之類的東西,然后將你的XML寫出來,例如一個MemoryStream,然后從那里讀回一個字符串進行顯示。

使用XmlTextWriter並設置XmlWriterSettings以便啟用縮進。 如果要將結果字符串寫入屏幕,可以將StringWriter用作“臨時存儲”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM