I find XmlTextWriter more intuitive than XmlDocument for editing.
eg:.
string xmlString = null; using(StringWriter sw = new StringWriter()) { XmlTextWriter writer = new XmlTextWriter(sw); writer.Formatting = Formatting.Indented; // if you want it indented writer.WriteStartDocument(); // <?xml version="1.0" encoding="utf-16"?> writer.WriteStartElement("TAG"); //<TAG> // <SUBTAG>value</SUBTAG> writer.WriteStartElement("SUBTAG"); writer.WriteString("value"); writer.WriteEndElement(); // <SUBTAG attr="hello">world</SUBTAG> writer.WriteStartElement("SUBTAG"); writer.WriteStartAttribute("attr"); writer.WriteString("hello"); writer.WriteEndAttribute(); writer.WriteString("world"); writer.WriteEndElement(); writer.WriteEndElement(); //</TAG> writer.WriteEndDocument(); xmlString = sw.ToString(); }
after this code, xmlString will contain:
<?xml version="1.0" encoding="utf-16"?> <TAG> <SUBTAG>value</SUBTAG> <SUBTAG attr="hello">world</SUBTAG> </TAG>
ADDITIONAL INFORMATION:
using an XmlDocument would be:
XmlDocument doc = new XmlDocument(); XmlNode tagNode = doc.CreateNode(XmlNodeType.Element, "TAG", null); doc.AppendChild(tagNode); XmlNode subTagNode1 = doc.CreateNode(XmlNodeType.Element, "SUBTAG", null); tagNode.AppendChild(subTagNode1); XmlText subTagNode1Value = doc.CreateTextNode("value"); subTagNode1.AppendChild(subTagNode1Value); XmlNode subTagNode2 = doc.CreateNode(XmlNodeType.Element, "SUBTAG", null); tagNode.AppendChild(subTagNode2); XmlAttribute subTagNode2Attribute = doc.CreateAttribute("attr"); subTagNode2Attribute.Value = "hello"; subTagNode2.Attributes.SetNamedItem(subTagNode2Attribute); XmlText subTagNode2Value = doc.CreateTextNode("world"); subTagNode2.AppendChild(subTagNode2Value); string xmlString = null; using(StringWriter wr = new StringWriter()) { doc.Save(wr); xmlString = wr.ToString(); }
digEmAll
source share