c#xml转换成datagrid不同级别的子级
本文关键字:转换 datagrid c#xml | 更新日期: 2023-09-27 18:19:55
我需要使用类似的xml
<jobpost id='01'>
<candidate id='0000079'>
<firstName>AAAA</firstName>
<lastName>BBBB</lastName>
<age>32</age>
<salaryoff>37000</salaryoff>
<exp>C</exp>
<cat>
<award>5</award>
<hst>5</hst>
<previous>7</previous>
<flex>3</flex>
<travel>4</travel>
</cat>
</candidate>
<candidate id='0000072'>
<firstName>CCCCC</firstName>
<lastName>DDDDD</lastName>
<age>37</age>
<salaryoff>40000</salaryoff>
<exp>B</exp>
<cat>
<award>6</award>
<hst>5</hst>
<previous>6</previous>
<flex>2</flex>
<travel>3</travel>
</cat>
</candidate>
</jobpost>
并以这种格式显示在数据网格中
name last age exp awa hst pre fle tra salaryoff
AAAA BBBB 32 C 5 5 7 3 4 37000
CCCCC DDDDD 37 B 6 5 6 2 3 40000
我试过这样的
XmlReader xmlFile = XmlReader.Create(my_path + "jobpost.xml", new XmlReaderSettings());
DataSet dataSet = new DataSet();
dataSet.ReadXml(xmlFile);
candidati.DataSource = dataSet;
candidati.DataMember = "cat";
xmlFile.Close();
但我只设法得到一部分信息,因为我需要
awa hst pre fle tra
5 5 7 3 4
6 5 6 2 3
或
candidati.DataMember = "candidate";
name last age exp salary
AAAA BBBB 32 C 37000
CCCCC DDDDD 37 B 40000
在进入循环的循环之前:)和导航我想知道是否有某种方法可以根据我的需要用一些我不知道的结构来组织数据,从现在起我就没有找到。
thx,如果你已经到达这里:)
您可以尝试使用LINQ压平结果,然后将结果绑定到DataGrid
编辑
我对LINQ to XML还很陌生,但这确实是我所理解的。
XDocument doc = XDocument.Load(@"XMLFile.xml");
var query = from c in doc.Root.Descendants("candidate")
let cat = c.Element("cat")
select new
{
FirstName = c.Element("firstName").Value,
LastName = c.Element("lastName").Value,
Age = c.Element("age").Value,
Salary = c.Element("salaryoff").Value,
Exp = c.Element("exp").Value,
Award = cat.Element("award").Value,
Hst = cat.Element("hst").Value,
Previous = cat.Element("previous").Value,
Flex = cat.Element("flex").Value,
Travel = cat.Element("travel").Value,
};
dgv.DataSource = query.ToList();