H
Hans Kamp
My program fails reading XML attributes. A fragment of the code is:
private void showXmlNodeAtTreeNode(XmlNodeList xnl, TreeNode tn)
{
int i;
for (i = 0; i < xnl.Count; i++)
{
XmlNode xn = xnl;
XmlNodeType nodeType = xn.NodeType;
if (nodeType == XmlNodeType.XmlDeclaration)
{
tn.Nodes.Add("Declaration");
} else
if (nodeType == XmlNodeType.Element)
{
tn.Nodes.Add("Element: " + xn.Name);
showXmlNodeAtTreeNode(xn.ChildNodes, tn.Nodes);
} else
if (nodeType == XmlNodeType.Text)
{
tn.Nodes.Add("Text: " + xn.InnerText);
} else
if (nodeType == XmlNodeType.Attribute)
{
tn.Nodes.Add("Attribute: " + xn.Name);
showXmlNodeAtTreeNode(xn.ChildNodes, tn.Nodes);
} else
if (nodeType == XmlNodeType.EntityReference)
{
tn.Nodes.Add("EntityReference: " + xn.Name);
showXmlNodeAtTreeNode(xn.ChildNodes, tn.Nodes);
}
if (nodeType == XmlNodeType.Entity)
{
tn.Nodes.Add("Entity: " + xn.Name);
showXmlNodeAtTreeNode(xn.ChildNodes, tn.Nodes);
}
}
}
private void parseButton_Click(object sender, System.EventArgs e)
{
XmlDocument xd = new XmlDocument();
xd.LoadXml(xmlBox.Text);
XmlNode xn = xd.FirstChild;
xmlView.Nodes.Clear();
xmlView.Nodes.Add("Start");
showXmlNodeAtTreeNode(xd.ChildNodes, xmlView.Nodes[0]);
}
When I type the following in the EditBox:
<a b='c'>d</a>
the TreeView only shows:
Start
Element: a
Text: d
The attribte b='c' is not displayed anywhere.
How do I solve that?
Hans Kamp.
private void showXmlNodeAtTreeNode(XmlNodeList xnl, TreeNode tn)
{
int i;
for (i = 0; i < xnl.Count; i++)
{
XmlNode xn = xnl;
XmlNodeType nodeType = xn.NodeType;
if (nodeType == XmlNodeType.XmlDeclaration)
{
tn.Nodes.Add("Declaration");
} else
if (nodeType == XmlNodeType.Element)
{
tn.Nodes.Add("Element: " + xn.Name);
showXmlNodeAtTreeNode(xn.ChildNodes, tn.Nodes);
} else
if (nodeType == XmlNodeType.Text)
{
tn.Nodes.Add("Text: " + xn.InnerText);
} else
if (nodeType == XmlNodeType.Attribute)
{
tn.Nodes.Add("Attribute: " + xn.Name);
showXmlNodeAtTreeNode(xn.ChildNodes, tn.Nodes);
} else
if (nodeType == XmlNodeType.EntityReference)
{
tn.Nodes.Add("EntityReference: " + xn.Name);
showXmlNodeAtTreeNode(xn.ChildNodes, tn.Nodes);
}
if (nodeType == XmlNodeType.Entity)
{
tn.Nodes.Add("Entity: " + xn.Name);
showXmlNodeAtTreeNode(xn.ChildNodes, tn.Nodes);
}
}
}
private void parseButton_Click(object sender, System.EventArgs e)
{
XmlDocument xd = new XmlDocument();
xd.LoadXml(xmlBox.Text);
XmlNode xn = xd.FirstChild;
xmlView.Nodes.Clear();
xmlView.Nodes.Add("Start");
showXmlNodeAtTreeNode(xd.ChildNodes, xmlView.Nodes[0]);
}
When I type the following in the EditBox:
<a b='c'>d</a>
the TreeView only shows:
Start
Element: a
Text: d
The attribte b='c' is not displayed anywhere.
How do I solve that?
Hans Kamp.