2016-07-23 3 views
2

Я пытаюсь читать только эту часть какой-то большой файл XML:Чтение часть XML с XDocument

--------------------- 

<SOL> 
    <LineDisc>109.90</LineDisc> 
</SOL> 

--------------------- 

и я нашел способ сделать это, но у меня есть вопрос.

 string testElement; 
     XmlDocument doc = new XmlDocument(); 


     doc.Load(xmlFilePath); 

     XmlNodeList companyList = doc.GetElementsByTagName("SOL"); 

     foreach (XmlNode node in companyList) 
     { 
      XmlElement companyElement = (XmlElement)node; 

      testElement = companyElement.GetElementsByTagName("LineDisc")[0].InnerText; 
      Console.WriteLine(companyElement.SelectSingleNode("LineDisc").Value); 
      Console.WriteLine(testElement); 

     } 

Первый способ доступа к узлу по имени тега работает хорошо, но мой вопрос, почему я не могу достичь того же с SelectSingleNode?

+0

что вы получаете, когда вы используете 'SelectSingleNode'? любая ошибка? – Mostafiz

+0

@MostafizurRahman Ссылка на объект не установлена ​​в экземпляр объекта. –

+0

@analogvoyager У вас есть пространство имен, определенное на корневом элементе? –

ответ

0

Использование пространств имен XML

var namesp = new XmlNamespaceManager(doc.NameTable); 
namesp.AddNamespace("name", "http://ratequote.usfnet.usfc.com/v2/x1"); 

XmlNode companyList = doc.SelectSingleNode("//name:SQL", namesp).FirstChild; 
+0

Действительно, это сделало это: companyElement.SelectSingleNode ("// name: LineDisc", namesp) .FirstChild.Value. Большое спасибо! –

+0

это хорошее, счастливое кодирование :) – Mostafiz

Смежные вопросы