2016-11-28 2 views
1
<information items ="2"> 
    <table id="31"> </table> 
    <profile code="5"> 
     <name language="ro"> Spania </name> 
     <name language="gb"> Spain </name> 
     <name language="pl"> Hiszpania </name> 
    </profile> 
</information> 

Я хочу взять значение элемента <name> имея его атрибут language = "gb"получить конкретное XElement значения ребенка

Я пытался что-то вроде:

string country = xdoc.Descendants("information").Elements("profile").Elements("name")./*???Value???*? 

Как я могу добиться этого?

ответ

2

Вы можете использовать XPath:

С System.Xml.Linq.XDocument:

string country = xdoc.XPathSelectElement("/information/profile/name[@language='gb']").Value; 

С System.Xml.XmlDocument:

string country = xdoc.SelectSingleNode("/information/profile/name[@language='gb']").InnerText; 

Имейте в виду, что вам также необходимо System.Xml.XPath пространство имен.

+0

У меня: XDocument xdoc = XDocument.Load (reader); и reader = XmlReader.Create (Url); reader.MoveToContent(); –

+0

затем используйте первый пример. Это для пространства имен System.Xml.Linq – NtFreX

+0

для второго примера, xdoc должен быть XmlNode, а не XDocument? –