<?xml version="1.0" encoding="utf-8" ?>
<books>
<book>
<title>Beginning Visual C# 2010</title>
<author>Karli Watson</author>
<code>7582</code>
</book>
<book>
<title>Professional C# 2010</title>
<author>Simon Robinson</author>
<code>7043</code>
</book>
</books>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnLoopThroughDoc_Click(object sender, EventArgs e)
{
XmlDocument document = new XmlDocument();
document.Load(@"../../Books.xml");
textBox1.Text = FormatText(document.SelectSingleNode("books"), "", "");
}
private string FormatText(XmlNode node, string text, string indent)
{
if (node is XmlText)
{
text += node.Value;
return text;
}
if (string.IsNullOrEmpty(indent))
{
indent = "";
}
else
{
text += "\r\n" + indent;
}
if (node is XmlComment)
{
text += node.OuterXml;
return text;
}
text += "<" + node.Name;
if (node.Attributes.Count > 0)
{
AddAttributes(node, ref text);
}
if (node.HasChildNodes)
{
text += ">";
foreach (XmlNode child in node.ChildNodes)
{
text = FormatText(child, text, indent + " ");
}
if (1 == node.ChildNodes.Count &&
(node.FirstChild is XmlText || node.FirstChild is XmlComment))
{
text += "</" + node.Name + ">";
}
else
{
text += "\r\n" + indent + "</" + node.Name + ">";
}
}
else
{
text += " />";
}
return text;
}
private void AddAttributes(XmlNode node, ref string text)
{
foreach (XmlAttribute xa in node.Attributes)
{
text += " " + xa.Name + "='" + xa.Value + "'";
}
}
}