Выберите группу предметов, используя linq to xml - PullRequest
0 голосов
/ 04 июля 2011

Моя голова озадачена этим.У меня есть документ XML, в котором хранится макет сетки.Если вы заметили, что столбцы хранятся как «Предметы» в XML.Я пытаюсь извлечь каждый «элемент» из XML с помощью LINQ, но независимо от того, что я делаю, я продолжаю принимать свойства straggler, которые мне не нужны.Любая помощь будет высоко ценится.

  <?xml version="1.0" encoding="utf-16" ?> 
     <DatagridView>
        <ViewType>DevExpress.XtraGrid.Views.Grid.GridView</ViewType> 
           <ViewLayout> 
             <property name="Columns" iskey="true" value="9">
                <property name="Item1" isnull="true" iskey="true">
                   <property name="VisibleIndex">0</property> 
                   <property name="Visible">true</property> 
                   <property name="Width">1249</property> 
                   <property name="SummaryItem" isnull="true" iskey="true">
                      <property name="SummaryType">Count</property> 
                      <property name="DisplayFormat">{0}</property> 
                      <property name="FieldName">Comments</property> 
                      <property name="Tag" isnull="true" /> 
                   </property>
                   <property name="Name">colComments</property> 
                   <property name="ColumnEditName" /> 
                   <property name="FieldName">Comments</property> 
                </property>
                <property name="Item2" isnull="true" iskey="true">
                   <property name="VisibleIndex">1</property> 
                   <property name="Visible">true</property> 
                   <property name="Width">197</property> 
                   <property name="Name">colEvent</property> 
                   <property name="ColumnEditName" /> 
                   <property name="FieldName">Event</property> 
                </property>
                ......

РЕДАКТИРОВАТЬ:

Для ясности, XML может содержать любое количество столбцов, представленных так:

            <property name="Item2" isnull="true" iskey="true">
               <property name="VisibleIndex">1</property> 
               <property name="Visible">true</property> 
               <property name="Width">197</property> 
               <property name="Name">colEvent</property> 
               <property name="ColumnEditName" /> 
               <property name="FieldName">Event</property> 
            </property>

Iхотел бы получить эти фрагменты данных в том же порядке через XML.

1 Ответ

2 голосов
/ 04 июля 2011

Ну, вы можете просто получить элементы свойства непосредственно под "Столбцами":

// TODO: Work out what to do if there are zero or multiple such elements
var columns = xdoc.Descendants("property")
                  .Where(x => (string) x.Attribute("name") == "Columns")
                  .Single();

var items = columns.Elements("property");

foreach (var item in items)
{
    Console.WriteLine("Item {0}", (string) item.Attribute("name"));
    foreach (var property in items.Elements("property"))
    {
        Console.WriteLine("  {0} = {1}", (string) item.Attribute("name"),
                          (string) item);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...