Use XpathNavigator to navigate and edit XML data






3.50/5 (5 votes)
Use the XPathNavigator to edit and read XML. This article demonstrates how you can do, using conditions.
Introduction
Use the XPathNavigator to read XML. This article demonstrates how you can do, using conditions.
Background
- ASP.NET, C# Medium Knowledge.
- XML and XPATH Knowledge.
Using the code
This article demonstrates how to read data from a XML File, using XPATH. So, let the words aside and go to work.
This is the XML Source:
<?xml version="1.0" encoding="utf-8" ?>
<Roles>
<Role name="Admin">
<Username><![CDATA[hGUC0QB2G3l1cb0YSnJkUJpcQB2cv6h3]]></Username>
<Password><![CDATA[P3W+pDC2Vn/TH1Bbgmm/1A==]]></Password>
</Role>
</Roles>
//Next, this is the method to get values from XML file:
private MyCredential[] GetAdminCredentials()
{
HttpServerUtility server = HttpContext.Current.Server;
List<MyCredential> credentials = new List<MyCredential>();
try
{
XmlDocument xmlDocument = new XmlDocument();
string filename = @".\Roles.xml";
xmlDocument.Load(server.MapPath(filename));
XPathNavigator nav = xmlDocument.CreateNavigator();
XPathNodeIterator iterator = nav.Select("Roles/Role[@name='Admin']"); //this is a condition. Only nodes which contains role name = 'admin' are processed.
while (iterator.MoveNext()) //while there are nodes where role name='admin'
{
MyCredential credential = new MyCredential();
iterator.Current.MoveToChild("Username",string.Empty);
credential.Username = CryptographyServices.Decrypt(iterator.Current.Value);
iterator.Current.MoveToParent(); //move to root
iterator.Current.MoveToChild("Password", string.Empty);
credential.Password = CryptographyServices.Decrypt(iterator.Current.Value);
credentials.Add(credential);
iterator.Current.MoveToParent(); //move to root again
}
return credentials.ToArray();
}
catch (Exception innerException)
{
throw innerException;
}
}
Points of Interest
In next article we will update a xml file using CData Sections. Thanks for your attention.
History
Keep a running update of any changes or improvements you've made here.