private static void WriteElement(Bamboo.Xml.XmlElement element, Bamboo.Xml.IndentedTextWriter writer) { writer.Write("<" + element.Name); foreach (Bamboo.Xml.XmlAttribute attribute in element.Attributes) { writer.Write(" " + attribute.Name + "=\"" + attribute.Value + "\""); } writer.Write(">"); writer.Write(System.Web.HttpUtility.HtmlEncode(element.Value)); if (element.Elements.Count > 0) { writer.WriteLineNoTabs(); writer.Indent(); foreach (Bamboo.Xml.XmlElement element2 in element.Elements) { writer.WriteIndentations(); WriteElement(element2, writer); writer.WriteLineNoTabs(); } writer.Unindent(); } writer.Write("</" + element.Name + ">"); }
private static Bamboo.Xml.XmlElement Read(System.Xml.XmlTextReader xmlTextReader) { System.Collections.Stack elementsStack = new System.Collections.Stack(); while (xmlTextReader.Read()) { switch (xmlTextReader.NodeType) { case System.Xml.XmlNodeType.Element: { Bamboo.Xml.XmlElement element = new Bamboo.Xml.XmlElement(); element.Name = xmlTextReader.LocalName; if (xmlTextReader.IsEmptyElement) { if (elementsStack.Count == 0) { elementsStack.Push(element); } else { Bamboo.Xml.XmlElement parent = (XmlElement)elementsStack.Peek(); parent.Elements.Add(element); } } else { if (elementsStack.Count > 0) { Bamboo.Xml.XmlElement parent = (XmlElement)elementsStack.Peek(); parent.Elements.Add(element); } elementsStack.Push(element); } for (int i = 0; i < xmlTextReader.AttributeCount; i++) { xmlTextReader.MoveToAttribute(i); Bamboo.Xml.XmlAttribute xmlAttribute = new Bamboo.Xml.XmlAttribute(); xmlAttribute.Name = xmlTextReader.LocalName; xmlAttribute.Value = xmlTextReader.Value; element.Attributes.Add(xmlAttribute); } break; } case System.Xml.XmlNodeType.EndElement: { if (elementsStack.Count > 1) { elementsStack.Pop(); } break; } case System.Xml.XmlNodeType.CDATA: case System.Xml.XmlNodeType.Text: { ((XmlElement)elementsStack.Peek()).Value = xmlTextReader.Value; break; } } } if (elementsStack.Count == 0) { throw new System.Exception("Document does not contain any elements."); } else if (elementsStack.Count > 1) { throw new System.Exception("Document contains more than one root element."); } return((XmlElement)elementsStack.Pop()); }
public static void Write(Bamboo.Xml.XmlElement element, System.IO.TextWriter writer) { WriteElement(element, new Bamboo.Xml.IndentedTextWriter(writer)); writer.Flush(); }
public static void Write(Bamboo.Xml.XmlElement element, System.IO.Stream stream) { Write(element, new System.IO.StreamWriter(stream)); }