Parse an XML file
The following code shows a simple method of parsing through an XML file/string. We can get the parent name, child name, attributes etc from the XML. The namespace System.Xml would be the only additional namespace that we would be using.
string myXMl = "<Employees>" +
"<Employee ID='1' Name='John Mayer'" +
"Address='12th Street'" +
"City='New York' Zip='10004'>" +
"</Employee>" +
"</Employees>";
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(myXMl);
XmlNodeList xNodeList = xDoc.SelectNodes("Employees/child::node()");
foreach (XmlNode xNode in xNodeList)
{
if (xNode.Name == "Employee")
{
string ID = xNode.Attributes["ID"].Value; //Outputs: 1
string Name = xNode.Attributes["Name"].Value;//Outputs: John Mayer
string Address = xNode.Attributes["Address"].Value;//Outputs: 12th Street
string City = xNode.Attributes["City"].Value;//Outputs: New York
string Zip = xNode.Attributes["Zip"].Value; //Outputs: 10004
}
}
Lets look at another XML:
string myXMl = "<root>" +
"<parent1>..some data</parent1>" +
"<parent2>" +
"<Child1 id='1' name='Adam'>data1</Child1>" +
"<Child2 id='2' name='Stanley'>data2</Child2>" +
"</parent2>" +
"</root>";
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(myXMl);
XmlNodeList xNodeList = xDoc.SelectNodes("root/child::node()");
//Traverse the entire XML nodes.
foreach (XmlNode xNode in xNodeList)
{
//Looks for any particular nodes
if (xNode.Name == "parent1")
{
//some traversing....
}
if (xNode.Name == "parent2")
{
//If the parent node has child nodes then
//traverse the child nodes
foreach (XmlNode xNode1 in xNode.ChildNodes)
{
string childNodeName = xNode1.Name; //Ouputs: Child1
string childNodeData = xNode1.InnerText; //Outputs: data1
//Loop through each attribute of the child nodes
foreach (XmlAttribute xAtt in xNode1.Attributes)
{
string attrName = xAtt.Name; //Outputs: id
string attrValue = xAtt.Value; //Outputs: 1
}
}
}
}