Reading XML to get value of a tag c#

I have my XML as

<?xml version="1.0" encoding="utf-8" ?>
<configuration>   
 <recordsDirectory>F:/model_RCCMREC/</recordsDirectory> 
 <transferDirectory>F:/model_RCCMrecTransfered/</transferDirectory>
 <logDirectory>F:/model_RCCMLOG/</logDirectory>
 <connectionstring>Data Source=192.168.1.7;Initial Catalog=RCCMdb;User ID=genesys;Password=genesys</connectionstring>  
  <table>RCCMrec</table> 
    <DBdestination>
    <val1>ANI</val1>
    <val2>DNIS</val2>
    <val3>Date</val3>
    <val4>Time</val4>
    <val5>ConnId</val5>
    <val6>UUID</val6>
    <val7>EmployeeId</val7>
    <val8>AgentDN</val8> 
    </DBdestination>   
</configuration>

I need the value of the recordsDirectory tag. I tried this,

XmlDocument xmldoc = new XmlDocument(); 
xmldoc.Load("C:/Users/yachna/Desktop/RCCM_TOOL/configRCCM.xml");
string bvalue = xmldoc.SelectSingleNode("recordsDirectory").InnerText.ToString();

But got an error saying

Object reference not set to an instance of an object.

Jon Skeet
people
quotationmark

Yes, SelectSingleNode("recordsDirectory") will return null, because you're applying that XPath to the document itself - which doesn't have a recordsDirectory element at the top level, it has a configuration element. You want:

xmldoc.SelectSingleNode("configuration/recordsDirectory")

Or go via the root element:

xmldoc.DocumentElement.SelectSingleNode("recordsDirectory")

(Or you can fetch all descendant elements call recordsDirectory, etc. There are plenty of options here.)

Personally I'd suggest changing to use LINQ to XML if you can, as it's a simpler way of using XML, IMO. It's not too bad in the code you've given so far, but as you do more things with XmlDocument you'll run into it being a bit of a pain - relatively speaking, anyway.

You should also consider separating the "fetching the node" from getting the text, so you can validate that you've found the one you want:

XmlNode node = xmldoc.DocumentElement.SelectSingleNode("recordsDirectory");
if (node != null)
{
    // Use it
}
else
{
    // No such node. What do you want to do?
}

people

See more on this question at Stackoverflow