Итак, вопрос дня нуби ...
У меня есть XML-файл со следующей структурой:
<result>
<rowSet name="name">
<row name="name1" />
<row name="name2" />
<row name="name3" />
</rowSet>
<rowSet name="type">
<row type="type1" />
<row type="type2" />
<row type="type3" />
</rowSet>
etc..
</result>
Я пытался и довольно безуспешно пыталсяполучить атрибуты строки из одного набора строк на основе имени атрибута rowSet :.Другими словами, я пытаюсь извлечь атрибуты из «строки», которые содержатся только в rowSet: атрибут определенного имени.
Я пытался использовать:
var rowSet = from rs in xmlDoc.Descendants("result")
where rs.Descendants("rowset").Attributes("name").Any(a => a.Value == "name")
select new
{
row = from r in xmlDoc.Descendants("row")
select new
{
skillID = r.Attribute("name"),
}
};
Однако это не дает более одного результата.Я был довольно разочарован, и все же снова ... попробовав 15 различных предложений, я не смог вспомнить исходный код для читателя.
Был дан ответ:
var rowNames = (from i in xmlDoc.Descendants("rowSet")
where (string)i.Attribute("name") == "name"
select i.Descendants("row")) // Had to move this last ) to...
.Select(r => (string)r.Attribute("name")); // Here in order to get it to work
Я считаю,это сработало, но я слишком дурак, чтобы выяснить, как выполнить итерацию, хотя я могу получить данные через «Result View» отладчика во время работы программы.
OkТаким образом, я могу заставить этот запрос работать правильно (сначала переместив «)», и когда я начинаю шагать по коду, в rowNames есть значения.Тем не менее, я был очень неудачным в отображении информации в любом случае.Я играю с этим в консольном приложении, fyi.
Итак, это первая проблема.
Вторая, если я начну делать свой XML немного более сложным, добавив несколько атрибутовк элементам строки, например:
<result>
<rowSet name="name">
<row fName="Ted" lName = "Happy" />
<row name="Billy" lName = "Maddison"/>
<row name="John" lName = "Doe"/>
</rowSet>
<rowSet name="type">
<row type="type1" type2 ="Hero"/>
<row type="type2" type2 ="Villain" />
<row type="type3" type2 ="Neutral"/>
</rowSet>
</result>
Как тогда получить все атрибуты в элементе?
Это кажется таким простым, поэтому я чувствую себя довольно отсталым в данный момент.