2014-01-27 4 views
0

Я пытаюсь разобрать следующее:разбора атрибут из XML-файла

<?xml version="1.0" encoding="utf-8"?> 
<GC> 
    <CREATED>01/23/2014 16:10:18</CREATED> 
    <DATA> 
    <CONTAINER name="home" type="xml" version="1.1.0.0"> 
     <HEADER> 
     <ATTRIBUTE name="lang" value="EN" /> 
     <ATTRIBUTE name="destination" value="UK" /> 
     </HEADER> 
    </CONTAINER> 
    </DATA> 
</GC> 

Как я могу идти о поиске значения когда имя = «языки»?

До сих пор у меня есть это: Не кажется

XmlDocument Doc = new XmlDocument(); 
Doc.Load(@path); 
XmlNode node = Doc.DocumentElement.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE/NAME"); 
string SI = node.Attributes["lang"].InnerText; 

не работать, к сожалению, может использовать некоторую помощь. Большое спасибо.

+0

Имя атрибута является 'name' - значение' lang' – davisoa

+0

Что вы пытаетесь достичь? 'lang' * - * внутренний текст. Вы пытаетесь найти значение 'name'? – Jonesopolis

+0

Я хочу узнать, что ** значение ** содержит – Orangine

ответ

0

Это будет делать:

XmlNode node = 
Doc.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name = 'lang']/@value"); 
string SI = node.InnerText; 

И я бы посоветовал использовать нулевой чек:

XmlNode node = 
Doc.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name = 'lang']/@value"); 
string SI = null; 
if(node != null) 
{ 
    SI = node.InnerText; 
} 
+0

Это должно быть @name = 'lang' –

+0

@ HåkanFahlstedt Вы абсолютно правы. Спасибо. – JLRishe

0

С помощью LINQ to XML вы можете получить его, как это:

XDocument xDoc = XDocument.Load("path"); 
var element = xDoc.Descendans("ATTRIBUTE").First(); 
var nameAttribute = (string)element.Attribute("name"); 
0

Это поможет вам значение атрибута в атрибуте тега, который имеет название == языки:

XmlDocument Doc = new XmlDocument(); 
Doc.Load(@path); 
XmlNode node = Doc.DocumentElement.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name='lang']"); 
string SI = node.Attributes["value"].InnerText; 
0
XmlNode node = Doc.DocumentElement.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name='lang']"); 
    string SI = node.Attributes["value"].Value; 
Смежные вопросы