65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Silverlight 中格式化 Xml 字符串

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2011年7月12日

CPOL
viewsIcon

14600

为视觉呈现格式化字符串中的 XML。

引言

如果您在字符串中拥有未格式化的 XML,并且需要将其格式化以进行视觉呈现,例如将其发送到您的 UI 文本显示控件,那么以下是在 Silverlight 4.0 中实现此目的的方法。

Silverlight 没有 XmlDocument 类。否则,您可以像 Ian Randell 在他的文章中所做的那样进行操作。

相反,Silverlight 当前(2011 年 1 月)提供了 XDocumentXmlWriter 类。因此,您可以使用这两个类,如下所示

使用代码

只需调用下面的 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();
}
© . All rights reserved.