我想遍历此XML文件(XmlDocument)并计算每个Employee元素具有的子节点数。我想遍历ID为1的Employee,计算子节点的数量,然后将其保存到HashSet中,并将Employee ID作为键,并将子节点的数量作为值。我的问题是,如何将每个Employee与Employee ID值映射?
XML文件:
<Workers>
<Employee>
<Employee_Summary>
<Employee_ID>1</Employee_ID>
<Name>Name </Name>
<Company_Code>Company Code</Company_Code>
<Unit_Code>Unit Code</Unit_Code>
</Employee_Summary>
<Company_Summary>
<Company_Name> Company Name</Company_Name>
<Company_Adress> Company Adress </Company_Adress>
<Company_Status> Company Status <Company_Status>
</Company_Summary>
</Employee>
<Employee>
<Employee_Summary>
<Employee_ID>2</Employee_ID>
<Name>Name </Name>
<Company_Code>Company Code</Company_Code>
<Unit_Code>Unit Code</Unit_Code>
</Employee_Summary>
<Company_Summary>
<Company_Name> Company Name</Company_Name>
</Company_Summary>
</Employee>
<Employee>
<Employee_Summary>
<Employee_ID>3</Employee_ID>
<Name>Name </Name>
<Unit_Code>Unit Code</Unit_Code>
</Employee_Summary>
<Company_Summary>
<Company_Name> Company Name</Company_Name>
<Company_Adress> Company Adress </Company_Adress>
<Company_Status> Company Status <Company_Status>
</Company_Summary>
</Employee>
</Workers>
您可以通过XDocument
轻松完成此操作:
var doc = XDocument.Parse(xml);
var results = new Dictionary<int, int>();
foreach (var employee in doc.Root.Elements("Employee"))
{
int id = (int)employee.Element("Employee_Summary").Element("Employee_ID");
int count = employee.Descendants().Count();
results[id] = count;
}
您也可以使用XmlDocument
:
var doc = new XmlDocument();
doc.LoadXml(xml);
var results = new Dictionary<int, int>();
foreach (XmlNode employee in doc.SelectNodes("/Workers/Employee"))
{
int id = int.Parse(employee.SelectSingleNode("./Employee_Summary/Employee_ID").InnerText);
int count = employee.SelectNodes(".//*").Count;
results[id] = count;
}