gpt4 book ai didi

c# - 在 C# 中使用 LINQ-To-XML 解析具有多个列表和类对象的 XML 数据

转载 作者:数据小太阳 更新时间:2023-10-29 02:55:48 26 4
gpt4 key购买 nike

假设我要解析以下 XML 文件:

 <EmployeeDetails>
<Employee> //List of Employees
<Id>11</Id>
<name>a</name>
<Dependents> //List of Dependents of a single employee
<Dependent>
<name>a1</name>
<age>50</age>
</Dependent>
<Dependent>
<name>a2</name>
<age>52</age>
</Dependent>
</Dependents>
<Department> //Unique per Emp
<DeptId>1</DeptId>
<DeptName>D1</DeptName>
</Department>
</Employee>
<Employee>
-----
--------
</Employee>
</EmployeeDetails>

以下是上述文件的结构:

public class Employee
{
public int id {get; set;}
public string name {get; set;}
public List<Dependents> Dependents {get; set;}
public Department Department {get; set;}
}

public class Dependents
{
public string name {get; set;}
public int age {get; set;}
}

public class Department
{
public int DeptId {get; set;}
public string DeptName {get; set;}
}

现在,我想解析上面的 XML 结构,我可以为 Employeeidname 解析,但我不能进一步解析。

让我向您展示我到目前为止所做的事情:

public static void ParseXml() 
{
string xmldoc = //let's assume I've data in this string

XDocument xdoc = new XDocument();
xdoc = XDocument.Parse(xmldoc);

var query = from d in xdoc.Root.Descendants("Employee")
select d;

List<Employee> lsEmp = new List<Employee>();

foreach (var q in query)
{
Employee obj = new Employee();
obj.Id = Convert.ToInt32(q.Element("Id").Value);
obj.name = q.Element("name").Value;


obj.Department = new Department();
obj.Dependents = new List<Dependents>();

// how to get data further?



lsEmp.Add(obj);
}

所以我需要帮助才能从这些 DependentsDepartment 对象列表中解析 XML 数据。

最佳答案

按照你自己的结构,这里是继续解析你需要的数据的方法。

// how to get data further?
var allDependents = q.Elements("Dependents").Elements("Dependent");

foreach (var b in allDependents)
{
Dependents d = new Dependents
{
age = Convert.ToInt32(b.Element("age").Value),
name = b.Element("name").Value
};
obj.Dependents.Add(d);
}

obj.Department.DeptId = Convert.ToInt32(q.Element("Department").Element("DeptId").Value);
obj.Department.DeptName = q.Element("Department").Element("DeptName").Value;

注意我使用了.Elements("")获取 Dependents

下的所有子节点

关于c# - 在 C# 中使用 LINQ-To-XML 解析具有多个列表和类对象的 XML 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49555416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com