2015-07-19 1 views
0

Я хочу получить значение атрибута узла с помощью SelectSingleNode. Я уже проверил here.Использование SelectSingleNode для получения значения атрибута

Я попробовал эти селекторы уже, но они возвращают нулевое ссылочное исключение:.. node.SelectSingleNode ("/ @ идентификатор") InnerText node.SelectSingleNode ("@ идентификатор") InnerText

Вот часть из XML Я пытаюсь разобрать:

<?xml version="1.0" encoding="utf-8"?> 
    <products> 
     <product ID="4de"> 
      <name>Prod name</name> 
     </product> 
     <product ID="4dea"> 
      <name>Prod name 2</name> 
     </product>  
</products> 


Dim productXML As New XmlDocument 
Dim node As XmlNode 
Dim root As XmlNode 
productXML.LoadXml(responseString) 
Dim mgr As XmlNamespaceManager = New XmlNamespaceManager(productXML.NameTable) 
mgr.AddNamespace("test", productXML.DocumentElement.NamespaceURI) 

root = productXML.DocumentElement 
Dim nodeList As XmlNodeList = root.SelectNodes("/products/product") 

'to get the product title (this works): 
node.SelectSingleNode("name").InnerText 

Как я могу получить «ID» значение атрибута из product узла через SelectSingleNode?

ответ

2

Обратите внимание, что XML чувствителен к регистру, поэтому вы должны уже использовали прописные @ID вместо:

node.SelectSingleNode("@ID").InnerText 

Demo (в C#): https://dotnetfiddle.net/TWMUlD

var xml = @" <products> 
     <product ID='4de'> 
      <name>Prod name</name> 
     </product> 
     <product ID='4dea'> 
      <name>Prod name 2</name> 
     </product>  
</products>"; 
var root = new XmlDocument(); 
root.LoadXml(xml); 
var nodeList = root.SelectNodes("/products/product"); 
foreach (XmlNode node in nodeList) 
{ 
    var id = node.SelectSingleNode("@ID").InnerText; 
    Console.WriteLine(id); 
} 

выход:

4de 
4dea 

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

  • Нет связанных вопросов^_^