在 Silverlight 中格式化 Xml 字符串





0/5 (0投票)
为视觉呈现格式化字符串中的 XML。
引言
如果您在字符串中拥有未格式化的 XML,并且需要将其格式化以进行视觉呈现,例如将其发送到您的 UI 文本显示控件,那么以下是在 Silverlight 4.0 中实现此目的的方法。
Silverlight 没有 XmlDocument
类。否则,您可以像 Ian Randell 在他的文章中所做的那样进行操作。
相反,Silverlight 当前(2011 年 1 月)提供了 XDocument
和 XmlWriter
类。因此,您可以使用这两个类,如下所示
使用代码
只需调用下面的 XmlFormat
方法,并在您的 UI 控件中显示结果,即带有缩进和换行的格式化结果。
using System.Xml;
using System.Xml.Linq;
using System.Text;
/// <summary>
/// Formats unformatted xml string input.
/// </summary>
/// <param name="stringXml">unformatted xml string</param>
/// <returns>Formatted xml string based on <paramref name="stringXml" /></returns>
private string FormatXml(string stringXml)
{
StringReader stringReader = new StringReader(stringXml);
//XDocument represents an XML Document,
//allowing in memory processing of it (primarily via Linq).
XDocument xDoc = XDocument.Load(stringReader);
var stringBuilder = new StringBuilder();
XmlWriter xmlWriter = null;
try
{
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.ConformanceLevel = ConformanceLevel.Auto;
settings.IndentChars = " ";
settings.OmitXmlDeclaration = true;
//The XDocument can write to an XmlWriter.
//The writer formats the well-formed xml.
//If not well-formed no formating will occur.
xmlWriter = XmlWriter.Create(stringBuilder, settings);// xd.cre(sw);
xDoc.WriteTo(xmlWriter);
}
finally
{
if (xmlWriter != null)
xmlWriter.Close();
}
return stringBuilder.ToString();
}