Friday, November 28, 2008

How to Use an XPath on a DataSet

This small snippet shows how to use a XPath on a DataSet.
Here are the used classes:

DataRow
DataSet
XmlDataDocument
XmlNodeList
XmlNode
Here's the XML file:

<?xml version="1.0" encoding="utf-8"?>
<CategoryList>
<Category ID="01">
<Title>One</Title>
</Category>
<Category ID="03">
<Title>Three</Title>
</Category>
<Category ID="04">
<Title>Four</Title>
</Category>
<Category ID="02">
<Title>Two</Title>
</Category>
</CategoryList>
Finally, here's the code:

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("file.xml"));

XmlDataDocument xmlDoc = new XmlDataDocument(ds);

XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes("/CategoryList/Category[@ID=01]");

DataRow myRow;
foreach (XmlNode myNode in nodeList)
{
myRow = xmlDoc.GetRowFromElement((XmlElement)myNode);
if (myRow != null)
Response.Write(myRow[0]);
}

No comments: