public void Write(XmlDocument document, TextWriter writer, XsltArgumentList argumentsOrNull, HtmlRendererEscapeBehaviour behaviour) { XmlDocument transformedDocument = Transform(document, argumentsOrNull); Write(transformedDocument.DocumentElement, writer, behaviour); }
private void Write(XmlNode element, TextWriter writer, HtmlRendererEscapeBehaviour behaviour) { WriteNode(element, writer, behaviour); }
private void WriteNode(XmlNode node, TextWriter writer, HtmlRendererEscapeBehaviour behaviour) { switch (node.NodeType) { case XmlNodeType.Element: XmlElement element = node as XmlElement; writer.Write("<"); writer.Write(element.Name); if (element.Name.ToLower() == "style" && behaviour == HtmlRendererEscapeBehaviour.IgnoreStyleElements) { _escapeState = EscapeState.Ignore; } foreach (XmlAttribute attribute in node.Attributes) { writer.Write(" {0}=\"{1}\"", attribute.Name, _escapeState == EscapeState.Escape ? EscapeHtml(attribute.Value) : attribute.Value ); } writer.Write(">"); foreach (XmlNode child in element.ChildNodes) { WriteNode(child, writer, behaviour); } if (!(element.ChildNodes.Count == 0 && _noEndTags.Contains(element.Name.ToLower()))) { writer.Write("</"); writer.Write(element.Name); writer.Write(">"); } _escapeState = EscapeState.Escape; break; case XmlNodeType.Text: writer.Write( _escapeState == EscapeState.Escape ? EscapeHtml((node as XmlText).Value) : (node as XmlText).Value ); break; } }
public string WriteToString(XmlDocument document, XsltArgumentList argumentsOrNull, HtmlRendererEscapeBehaviour behaviour) { using (StringWriter stringWriter = new StringWriter()) { Write(document, stringWriter, argumentsOrNull, behaviour); return stringWriter.GetStringBuilder().ToString(); } }