当父节点具有XMLNS时,读取XML失败

时间:2013-12-24 08:04:56

标签: c# asp.net xml xmldocument

我有一个应用程序,我在其中读取xml信息。 它工作正常,但是当我的父节点添加了一个XMLNS时,它会停止工作并开始抛出Null引用异常。

这个

的可能解决方案应该是什么

XML文件

<Info  xmlns="urn:smilu.com">
  <Number>123456</Number>  
  <Gender>2</Gender>
  <NamesEng>
    <First>FirstName</First>
    <Second>SecondName</Second>
    <Third>ThirdName</Third>
    <Fourth>FourthName</Fourth>
    <Fifth>FifthName</Fifth>
    <Sixth>SixthName</Sixth>
  </NamesEng> 
</Info>

我的C#代码用于阅读

 NameTable nt = new NameTable();
XmlNamespaceManager nsMgr = new XmlNamespaceManager(nt);                
nsMgr.AddNamespace("ns", "urn:smilu.com");

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(_LabourXMLInfo);

string Number = xdoc.DocumentElement.SelectSingleNode("Number", nsMgr).InnerText;

如果我从Info节点中删除 xmlns ,上面的代码就可以正常工作。但是,添加了xmlns,显示异常。 请帮助我。

1 个答案:

答案 0 :(得分:0)

您正在声明XML命名空间 - 但您实际上并非使用(指代它)。

将您的代码更改为:

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(_LabourXMLInfo);

// define XML namespace manager based on the XmlDocument's NameTable
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xdoc.NameTable);
nsMgr.AddNamespace("ns", "urn:smilu.com");

// add a "ns:" prefix to the XPath expression here!
string Number = xdoc.DocumentElement.SelectSingleNode("ns:Number", nsMgr).InnerText;