Я просто изучаю Linq и придерживаюсь того, на что надеюсь, довольно просто. Мой XML-документ, как:Прочитать определенное значение элемента на основе определенного атрибута в Linq?
<?xml version="1.0" encoding="utf-8"?>
<XDOC>
...
<ItemsDetail>
<Item name="Item1">
<data1>
<Data type="classA">55</Data>
<Data type="classB">66</Data>
</data1>
<data2>
<Data type="classA">77</Data>
<Data type="classB">88</Data>
</data2>
</Item>
</ItemsDetail>
</XDOC>
Так что я загрузить мой XML выше в XDocument
типа, а затем запросить
var query = from p in ILSXml.Elements("XDOC").Elements("ItemsDetail").Elements("Item")
select p;
Тогда я бегу foreach
на на запросе.
foreach (var record in query)
{
Console.WriteLine("Name: {0}", record.Attribute("Name").Value);
Console.WriteLine("Data1 ClassA: {0}", record.Element("data1").Element("Data").Attribute("classA").Value);
}
Так линия:
Console.WriteLine("Data1 ClassA: {0}", record.Element("data1").Element("Data").Attribute("classA").Value);
не работает, которая является то, что я был в значительной степени ожидал. Должен ли я запускать еще одну серию запросов или запускать встроенные анонимные методы?
О, пожалуйста, не комментируйте xml, это не мое, мне просто нужно работать с ним.
Это работает так же, как и сейчас, хотя и отсутствует. Первый. Есть ли более рекомендуемый способ работы с таким документом xml? –
Если вы можете получить документ XSD (документ схемы XML), который описывает ваш документ, я бы определенно посмотрел на создание реальных классов и использование стандартной сериализации XML. –