如何查找子节点并存储在不同的对象中
本文关键字:对象 存储 何查找 查找 子节点 | 更新日期: 2023-09-27 18:31:29
<?xml version="1.0" encoding="utf-8" ?>
<class name="EmployeeData.Employee">
<property emp="1">
<empid>12345678</empid>
<empname>ABC1</empname>
<project>XYZ1</project>
</property>
<property emp="2">
<empid>87654321</empid>
<empname>ABC2</empname>
<project>XYZ2</project>
</property>
</class>
在上面的XML文档中,我有两个名称为property
的节点。我需要解析它并存储值:"12345678","ABC1","XYZ1"
在一个对象中,"87654321","ABC2","XYZ2"
在另一个对象中。此外,我以后应该能够随时随地使用这两个对象。我该怎么做?
使用 LINQ2XML
var doc=XDocument.Load(url);
var output= doc.Elements("property").Select(x=>
new
{
empid=x.Element("empid").Value,
empname=x.Element("empname").Value,
project=x.Element("project").Value
}
);
现在您可以迭代输出
foreach(var property in output)
{
property.empid;
property.empname;
property.project;
}
首先获取每个<属性>属性>
XmlDocument xdoctest = new XmlDocument();
xdoctest.LoadXml("...");
XmlNodeList nodes = xdoctest.SelectNodes("class/property");
然后遍历每个属性节点,遍历该节点的每个元素并获取值。在此示例中,我附加到 StringBuilder,但对其进行编辑以满足您的需求。
foreach (XmlNode node in nodes)
{
StringBuilder nodeString = new StringBuilder();
foreach(XmlElement elm in node)
{
nodeString.Append(elm.InnerText + ",");
}
// Remove last ,
nodeString = new StringBuilder(nodeString.ToString().Substring(0, nodeString.Length - 1));
Console.WriteLine(nodeString);
}
根据您提供的 XML,输出为:
12345678,ABC1,XYZ1
87654321,ABC2,XYZ2