Andy wrote:
I have the following example XML:
<data>
<package>
<packageid>12 3</packageid>
<package_articl e>
<articleid>arti cle1</articleid>
</package_article >
</package>
<package>
<packageid>45 6</packageid>
<package_articl e>
<articleid>arti cle2</articleid>
</package_article >
</package>
</data>
I want to be able to list the following to the client, based on the above xml:
Package: 123
Article: article1
Package: 456
Article: article2
GetElementsByTa gName is not only a method of the document itself but of
any element node so you can use that as follows (C# code):
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Loa d(@"test2005070 301.xml");
foreach (XmlNode node in xmlDocument.Get ElementsByTagNa me("package")) {
XmlElement package = node as XmlElement;
XmlElement packageid = (XmlElement)
package.GetElem entsByTagName(" packageid")[0];
if (packageid != null) {
Console.WriteLi ne("Package: {0}", packageid.Inner Text);
}
XmlElement articleid = (XmlElement)
package.GetElem entsByTagName(" articleid")[0];
if (articleid != null) {
Console.WriteLi ne("Article: {0}", articleid.Inner Text);
}
Console.WriteLi ne();
}
But as .NET implements XPath it is usually easier and more elegant to
solve such tasks with XPath:
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Loa d(@"test2005070 301.xml");
foreach (XmlNode node in xmlDocument.Sel ectNodes("/data/package")) {
XmlElement package = node as XmlElement;
XmlElement packageid = (XmlElement)
package.SelectS ingleNode("pack ageid");
if (packageid != null) {
Console.WriteLi ne("Package: {0}", packageid.Inner Text);
}
XmlElement articleid = (XmlElement)
package.SelectS ingleNode("pack age_article/articleid");
if (articleid != null) {
Console.WriteLi ne("Article: {0}", articleid.Inner Text);
}
Console.WriteLi ne();
}
--
Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/