0

由于我还没有使用 LinqToXml 我想请你帮忙

源 XML:

<Projects xmlns="">
   <Project id="12345">
     <Name>AName</Name>
   </Project>
   <Project id="23456">
     <Name>BName</Name>
   </Project>
</Projects>

LINQ查询:

var q = (from xe in datasource.Descendants()
                 select new Data{ 
                                  ID = xe.Name.ToString(), 
                                  Name = xe.Value.ToString() 
                                }).ToList();

输出:

Project AName 
Name AName 
Project BName 
Name BName 

期望的输出:

12345 AName
23456 BName

因此,查询似乎正在遍历所有后代并Name作为节点名称和Value节点值。我应该如何修改它以获得所需的输出?像这样的东西怎么样:

  • 获取所有<Name>节点进行迭代

  • 为祖先选择Value该节点和id属性

PS 你有没有推荐任何针对 LinqToXml 的特定教程?

4

1 回答 1

1
var q = (from p in datasource.Descendants("Project")
         select new Data { 
               ID = (string)p.Attribute("id"), 
               Name = (string)p.Element("Name") 
         }).ToList();

还考虑具有ID整数类型的属性,那么您将能够以这种方式解析它:

ID = (int)p.Attribute("id")

您也可以使用方法(流利的)语法:

var q = datasource
          .Descendants("Project")
          .Select(p => new Data { 
               ID = (string)p.Attribute("id"), 
               Name = (string)p.Element("Name") })
          .ToList();
于 2013-03-26T12:09:38.803 回答