由于我还没有使用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
属性
P.S。您是否推荐LinqToXml的任何特定教程?
答案 0 :(得分: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();