2016-03-03 3 views
0

У меня есть следующая строка XML, но я не могу понять, как получить значения из XDocument.Как читать простой XML?

<root> 
    <Address>1st Street</Address> 
    <City>Denver<City> 
</root> 

Я использую:

XDocument mydoc = XDocument.Parse(xmlString); 

Оттуда, я не могу получить доступ к "ПгвЬЫате" и получить значение. Кто-нибудь знает, как это сделать?

+1

Может быть дубликат этого вопроса ? FYI Я не вижу «FirstName» в вставленном XML. http://stackoverflow.com/questions/16221558/how-to-get-value-of-child-node-from-xdocument – Seano666

+0

Является ли ваш xml отсутствующим «FirstName» или вы имеете в виду свойство FirstAttribute? –

ответ

1

Без XPath

var xAddress = mydoc.Root.Element("Address"); 
var xCity = mydoc.Root.Element("City"); 

var address = xAddress != null ? xAddress.Value : null; 
var city = xCity != null ? xCity.Value : null; 

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

var fordTrucks = someXml.Root.Elements.Where(elem.Attributes("Type").Value == "Ford"); 

Или вы можете превратить это в фактический класс:

var fordTrucks = someXml.Root.Elements.Where(elem => elem.Attributes("Type").Value == "Ford").Select(elem => { 
    return new Truck() { 
     Type = Enum.Parse(TypeOf(TruckTypes), elem.Attribute("Type").Value), 
     Model = elem.Attribute("Model").Value 
    } 
}); 
+0

Если адрес и город гарантированно находятся в файле xml, вам не нужно проверять, являются ли они пустыми. Однако я всегда это делаю, поэтому всегда могу позволить им не быть в файле XML. –

+1

вы также можете использовать 'var address = (string) mydoc.Root.Element (" Address ");'. Реализация явного преобразования в строку в LINQ to XML возвращает null, если элемент (или атрибут) не найден. Меньше кода для написания этого пути :) – Tim

+0

Oh! хорошо знать! –