Как получить более глубокие родные братья, используя LINQ to XML? - PullRequest
2 голосов
/ 26 мая 2011

У меня есть структура XML следующим образом.Мне нужно извлечь "Значение" и "Строка", сопоставив атрибуты команды?Как написать LINQ для этого?

 <Root>
    <Command val="1001" type="sync">
      <Status>
        <DataList>
          <Info>
            <Value>1</Value>
            <String>Sample String 1 is set</String>
          </Info>
          <Info>
            <Value>2</Value>
            <String>Sample String 2 is set</String>
          </Info>
          <Info>
            <Value>3</Value>
            <String>Sample String 3 is set</String>
          </Info>
        </DataList>
      </Status>
    <Command>
</Root>

Я пробовал что-то, как показано ниже, но во время работы возникла исключительная ситуация.

lst = (
    from command in xmlDoc.Descendants("Command")
        .Descendants("Status")
        .Descendants("DataList")
    select new EnumList
    {
        val = command.Element("Value").Value,
        stringVal = command.Element("String").Value,
    })
    .ToList();

1 Ответ

5 голосов
/ 26 мая 2011

Попробуйте

lst = (
    from command in xmlDoc.Descendants("Info")
    select new EnumList
    {
        val = command.Element("Value").Value,
        stringVal = command.Element("String").Value,
    })
    .ToList();

и у вас есть ошибка в образце xml (нет закрывающего тега Command), измените его на

    </Command>
</Root>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...