LINQ to XML: получение дочерних значений элементов - PullRequest
0 голосов
/ 02 марта 2011

Ну, это мой XML-файл

  <?xml version="1.0" encoding="utf-8"?>
<config>
  <setup>
    <Test>10</Test>
    <Copy>
      <Descr>AA</Descr>
      <Descr>BB</Descr>
    </Copy>
  </setup>
</config>

, а этот мой запрос LINQ: (

Dim query = From q In XElement.Load("\MyXml.xml").Elements("setup") _
            Where q.Element("Test").Value = "SomeValue" _
            Select New With {.Test = q.Element("Test").Value, _
                             .CopyDescr = q.Element("Copy/Descr").Value}

К сожалению, этот вызовет следующую прямую ошибку.

The '/' character, hexadecimal value 0x2F, cannot be included in a name.

Итак, мой вопрос: как я могу получить дочерние значения, содержащиеся в <Description>, также без получения ошибки? Вы видите, я хотел бы загрузить значения, содержащиеся в CopyDescrList of(String) для последующего использования ...

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 02 марта 2011

Aha!Я только что нашел это.Descendants делает свое дело.

.CopyDescr = q.Descendants("Descr")
0 голосов
/ 02 марта 2011

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

q.XPathSelectElements("Copy/Descr")

Однако это вернет список элементов.Возможно, вам нужно как-то объединить их, поэтому ваш код будет:

.CopyDescr = String.Join( "," ,
   from qq in q.XPathSelectElements("Copy/Descr") select qq.Value
);
...