使用Linq查询Xml文件中的记录
本文关键字:记录 文件 Xml Linq 查询 使用 | 更新日期: 2023-09-27 18:26:49
下面是我的xml文件。我必须在逗号分隔的字符串中为每一页和每一种类型提到字段。请帮助如何使用Linq
示例:如果我想为"page1"定义"Type=customFields",则必须以逗号分隔的形式获取输出项目ID、雇员ID、雇员名称、hasExpiration等
<Pages>
<Page Name="Page1" >
<Type TypeID="customfields">
<Field>ProjectID</Field>
<Field>EmployeeID</Field>
<Field>EmployeeName</Field>
<Field>HasExpiration</Field>
<Field>EndDate</Field>
</Type>
<Type TypeID="Directfields">
<Field>ProjectID</Field>
<Field>EmployeeID</Field>
<Field>EmployeeName</Field>
<Field>HasExpiration</Field>
<Field>EndDate</Field>
<Field>IsInUpdateMode</Field>
<Field>TimesheetSpendLimit</Field>
</Type>
</Page>
<Page Name="Page2" >
<Type TypeID="customfields">
<Field>ProjectID</Field>
<Field>EmployeeID</Field>
<Field>EmployeeName</Field>
<Field>HasExpiration</Field>
<Field>EndDate</Field>
<Field>IsInUpdateMode</Field>
<Field>TimesheetSpendLimit</Field>
</Type>
<Type TypeID="Directfields">
<Field>ProjectID</Field>
<Field>EmployeeID</Field>
<Field>EmployeeName</Field>
<Field>HasExpiration</Field>
<Field>EndDate</Field>
<Field>IsInUpdateMode</Field>
<Field>TimesheetSpendLimit</Field>
</Type>
</Page>
</Pages>
你可以这样做:
var Result = from a in element.Descendants("Page")
from b in a.Descendants("Type")
select new
{
Page = a.Attribute("Name").Value,
Type = b.Attribute("TypeID").Value,
Fields = String.Join(",", b.Elements("Field").Select(x => x.Value))
};
foreach (var item in Result)
{
Console.WriteLine(String.Format("Page = {0}:Type={1}:Fields:{2}", item.Page, item.Type, item.Fields));
}
工作FIDDLE
查看我的这篇博客文章以及更多。