<?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"
。此外,我应该能够随时随地使用这两个对象。我怎么能这样做?
答案 0 :(得分:1)
使用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;
}
答案 1 :(得分:0)
首先获取每个&lt; property&gt;
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