![](/img/trans.png)
[英]Quick way SqlXml to XmlDocument in C# for a SQLCLR function?
[英]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">
<link href="prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="prettify.js"></script>
</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.