I Поиск StackOverFlow, и я нашел вопрос, который был очень близок к моему. How to search XML using LINQ-to_XML Querylinq seach XML Атрибут
, используя следующую структуру XML:
<EnfocusReport>
<Report>
<PreflightResult errors="2" criticalfailures="0" noncriticalfailures="0" signoffs="0" fixes="12" warnings="0">
<PreflightResultEntry type="Check" level="error">
<PreflightResultEntryMessage xml:lang="en-US">
<Message>Media box width is 792 pt, should be equal to 612 pt, Media box height is 612 pt, should be equal to 792 pt (9x on pages 1-9)</Message>
….
</EnfocusReport>
</Report>
Мне нужно найти все элементы PreflightResultEntry, которые имеют атрибуты уровень = "ошибка":
<PreflightResultEntry type="Check" level="error">
Тогда быть в состоянии прочитать элемент PreflightResultEntryMessage/Message для меня Ssage:
<Message>Media box width is 792 pt, should be equal to 612 pt, Media box height is 612 pt, should be equal to 792 pt (9x on pages 1-9)</Message>
Так что я изменил его к тому, что я думал, что не правильная структура, однако мое возвращение запрос приходит пустые (нет данных).
Мой код:
var result2 = from EnfocusReport in XDocument.Load(args[0]).Root.Elements("EnfocusReport")
from Report in EnfocusReport.Elements("Report")
from PreflightResultEntry in Report.Elements("PreflightResultEntry")
from PreflightResultEntryMessage in PreflightResultEntry.Elements("PreflightResultEntryMessage")
where PreflightResultEntry.Attributes("level").Equals("error")
select PreflightResultEntryMessage.Elements("Message");
foreach (var el in result2)
{
Console.WriteLine(el);
Console.ReadLine();
}
чем проблема? – Matt
В XML-файле, который я использую, у меня должно быть два элемента, содержащих сообщение об ошибке. но мой результат не бреет никаких элементов. – Mike