Я пытаюсь получить набор значений из XML-документа:
<root>
<string id = "STRING_ID">
<control>
<type> Label </type>
<type> Form </type>
<type> ... </type>
</control>
</string>
</root>
У меня есть флажок в моем приложении. В зависимости от того, какая строка выбрана в datagridview, я запрашиваю XDocument следующим образом:
var controls = from str in xdoc.Descendants("string")
where str.Attribute("id").Value == tagBox.Text
from cont in str.Descendants("control")
where cont.HasElements
select cont.Elements();
И цель состоит в том, чтобы обновить флажок, отметив нужные поля, чтобы указать, к какому элементу управления принадлежит строка. Допускается несколько значений. На данный момент я могу получить только одно значение, даже если есть несколько <type>
дочерних элементов для любого заданного <control>
родителя.
Я знаю, что это неправильно, но я пытаюсь получить все значения <type>
, присутствующие в любом заданном <string>
в его дочернем элементе <control>
.
Затем я буду использовать этот код:
foreach (var co in controls)
controlsBox.SetItemChecked(controlsBox.Items.IndexOf(pr.), true);
Чтобы установить соответствующие элементы отмечены. Любые идеи?
foreach
в моем вопросе также должен выводить на консоль каждое значение внутриvar controls
, прежде чем он попытается установить флажок в элементе управления флажком. 05.08.2011<type>
(но вы можете выбратьtype.Value
, а не толькоtype
) 05.08.2011controls
возвращается пустым. 05.08.2011xdoc.Elements("string")
наxdoc.Descendants("string")
. Еще раз спасибо Томас! 05.08.2011xdoc.Root.Elements("string")
.Elements
быстрее, чемDescendants
, потому что не выполняет рекурсивный поиск. Лучше использоватьElements
, когда вы знаете точную структуру документа 05.08.2011