使用 linq to xml 选择一组项目

发布于 2024-11-18 12:27:07 字数 2551 浏览 0 评论 0原文

我的头对此感到困惑。我有一个 xml 文档,其中存储了网格的布局。如果您注意到这些列在 XML 中存储为“项目”。我试图使用 LINQ 从 XML 中检索每个“项目”,但无论我做什么,我都会继续获取我不需要的落后属性。任何帮助将不胜感激。

  <?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>

我想通过 XML 以相同的顺序获取这些数据块。

My head is fuzzled with this. I have an xml doc which has the layout for a grid stored in it. If you notice the columns are stored as "Items" in the XML. I am trying to retrieve each "Item" out of the XML using LINQ but no matter what I do I keep taking on straggler properties that I don't need. Any help would be much appreciated.

  <?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>
                ......

EDIT:

To be clear, the XML can contain any number of columns represented like so:

            <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 would like to grab those chunks of data in that same order via XML.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风流物 2024-11-25 12:27:07

好吧,您可以直接在“Columns”下面获取属性元素:

// 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);
    }
}

Well, you could just get the property elements directly beneath "Columns":

// 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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文