// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; using System.Text; namespace ICSharpCode.AvalonEdit.Xml { /// /// Converts the XML tree back to text. /// The text should exactly match the original. /// public class PrettyPrintAXmlVisitor: AbstractAXmlVisitor { StringBuilder sb = new StringBuilder(); /// /// Gets the pretty printed text /// public string Output { get { return sb.ToString(); } } /// Create XML text from a document public static string PrettyPrint(AXmlDocument doc) { PrettyPrintAXmlVisitor visitor = new PrettyPrintAXmlVisitor(); visitor.VisitDocument(doc); return visitor.Output; } /// Visit RawDocument public override void VisitDocument(AXmlDocument document) { base.VisitDocument(document); } /// Visit RawElement public override void VisitElement(AXmlElement element) { base.VisitElement(element); } /// Visit RawTag public override void VisitTag(AXmlTag tag) { sb.Append(tag.OpeningBracket); sb.Append(tag.Name); base.VisitTag(tag); sb.Append(tag.ClosingBracket); } /// Visit RawAttribute public override void VisitAttribute(AXmlAttribute attribute) { sb.Append(attribute.Name); sb.Append(attribute.EqualsSign); sb.Append(attribute.QuotedValue); } /// Visit RawText public override void VisitText(AXmlText text) { sb.Append(text.EscapedValue); } } }