This article shows how to use ‘System.Xml’ to read and write xml into a string.
Write xml into a String
First of all, we will use this following namespaces:
using System.Xml; // for XmlTextWriter
using System.IO; // for StringWriter
using System.IO; // for StringWriter
Then, to create easily a xml document, we will use XmlTextWriter. Here is a code example:
static private String CreateXmlString()
{
// create a string writer:
StringWriter stringWriter = new StringWriter();
// create a XML writer:
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);
xmlTextWriter.Formatting = Formatting.Indented;
// Start document
xmlTextWriter.WriteStartDocument();
// Start Element
xmlTextWriter.WriteStartElement("MainElement");
xmlTextWriter.WriteStartElement("Element1");
xmlTextWriter.WriteAttributeString("name", "myElement1Name");
xmlTextWriter.WriteAttributeString("type", "myElement1Type");
xmlTextWriter.WriteStartElement("SubElement1");
xmlTextWriter.WriteAttributeString("Id", "5");
xmlTextWriter.WriteEndElement();
xmlTextWriter.WriteEndElement();
xmlTextWriter.WriteStartElement("Element2");
xmlTextWriter.WriteAttributeString("name", "myElement2Name");
xmlTextWriter.WriteAttributeString("type", "myElement2Type");
xmlTextWriter.WriteValue(10.23);
xmlTextWriter.WriteEndElement();
// Close main Element
xmlTextWriter.WriteEndElement();
xmlTextWriter.Flush();
xmlTextWriter.Close();
stringWriter.Flush();
return stringWriter.ToString();
}
{
// create a string writer:
StringWriter stringWriter = new StringWriter();
// create a XML writer:
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);
xmlTextWriter.Formatting = Formatting.Indented;
// Start document
xmlTextWriter.WriteStartDocument();
// Start Element
xmlTextWriter.WriteStartElement("MainElement");
xmlTextWriter.WriteStartElement("Element1");
xmlTextWriter.WriteAttributeString("name", "myElement1Name");
xmlTextWriter.WriteAttributeString("type", "myElement1Type");
xmlTextWriter.WriteStartElement("SubElement1");
xmlTextWriter.WriteAttributeString("Id", "5");
xmlTextWriter.WriteEndElement();
xmlTextWriter.WriteEndElement();
xmlTextWriter.WriteStartElement("Element2");
xmlTextWriter.WriteAttributeString("name", "myElement2Name");
xmlTextWriter.WriteAttributeString("type", "myElement2Type");
xmlTextWriter.WriteValue(10.23);
xmlTextWriter.WriteEndElement();
// Close main Element
xmlTextWriter.WriteEndElement();
xmlTextWriter.Flush();
xmlTextWriter.Close();
stringWriter.Flush();
return stringWriter.ToString();
}
The returned string will be like this:
<?xml version="1.0" encoding="utf-16"?>
<MainElement>
<Element1 name="myElement1Name" type="myElement1Type">
<SubElement1 Id="5" />
</Element1>
<Element2 name="myElement2Name" type="myElement2Type">10.23</Element2>
</MainElement>
<MainElement>
<Element1 name="myElement1Name" type="myElement1Type">
<SubElement1 Id="5" />
</Element1>
<Element2 name="myElement2Name" type="myElement2Type">10.23</Element2>
</MainElement>
Parse our xml string
Now we can use XmlDocument to parse our XML string:
String strValue = CreateXmlString();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(strValue);
XmlElement rootElement = xmlDoc.DocumentElement;
foreach (XmlElement elem in rootElement.ChildNodes)
{
// etc...
}
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(strValue);
XmlElement rootElement = xmlDoc.DocumentElement;
foreach (XmlElement elem in rootElement.ChildNodes)
{
// etc...
}
