我有这个xml文档:
<?xml version="1.0" ?>
<object>
<name>Sphere</name>
<material>Steel</material>
<device Id="01">
<model>Model 1</model>
<color>Red</color>
</device>
<device Id="02">
<model>Model 2</model>
<color>Blue</color>
</device>
</object>
我希望能够在for循环中读取每个设备的模型和颜色。 我的代码一次只能读取一个值(模型或值),我必须经历两次循环。
我希望应该有一个更优雅的解决方案。
var xDoc = XDocument.Load(@"C:\_Projects\AProjectsCS\XML_Tutorial\Sample.xml");
IEnumerable<XElement> list1 = xDoc.Root.Descendants("model");
IEnumerable<XElement> list2 = xDoc.XPathSelectElements("//color");
foreach (XElement el in list1)
Console.WriteLine(el.Value);
foreach (XElement el in list2)
Console.WriteLine(el.Value);
谢谢, 尼克
答案 0 :(得分:1)
只需从每个设备元素中选择模型和颜色元素值(您可以使用匿名类型,如下所示,或创建自定义Device
类来保存此数据):
var xDoc = XDocument.Load(@"C:\_Projects\AProjectsCS\XML_Tutorial\Sample.xml");
var devices = from d in xDoc.Root.Elements("device")
select new {
Model = (string)d.Element("model"),
Color = (string)d.Element("color")
};
foreach(var device in devices)
{
Console.WriteLine(device.Model);
Console.WriteLine(device.Color);
}