2013-12-24 5 views
1

У меня есть приложение, в котором я читаю xml-информацию. Он работает нормально, но когда у моего родительского узла добавлен XMLNS, он перестает работать и начинает бросать исключение ссылки Null.Чтение XML не выполняется, когда родительский узел имеет XMLNS

Что должно быть возможное решение этой

XML File

<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; 

Приведенный выше код работает отлично, если я удалить Xmlns с узла Info. Но, добавив к нему xmlns, я покажу вам исключение. Пожалуйста, помогите мне в этом.

+0

Я пытался, но не работал – smilu

+0

я решил вопрос. XmlNamespaceManager nsMgr = новый XmlNamespaceManager (xdoc.NameTable); и сохранил ns: как префикс во всех кодах – smilu

ответ

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; 
Смежные вопросы