首页 > 解决方案 > 将具有属性的 XML 元素写入列表

问题描述

我有这个 XML 文件,并希望将所有带有 MGU 标记的值写入列表:

<?xml version="1.0" encoding="utf-8"?>
<Normen>
  <Norm Name="TL 52146">
    <MGU>PV 1401</MGU>
    <MGU>PV 1425</MGU>
    <MGU>PV 1448</MGU>
  </Norm>
</Normen>

预期的结果是:

当我使用这段代码时,我只得到一个包含所有 MGU 的列表元素,但我希望每个 MGU 在我的列表中都是一个单独的条目:

XDocument doc = XDocument.Load("data/data.xml");
var ChildsOfNorm = from element in doc.Descendants("Norm")
                   where element.Attribute("Name").Value == "TL 52146"
                   select element;

有人可以帮帮我吗?

标签: c#xmllinq-to-xml

解决方案


我将代码更改为以下内容:

var ChildsOfNorm = doc
     .Descendants("Norm")
     .Where(e => e.Attribute("Name").Value == "TL 52146")
     .Elements();

如果您只想获取MGU元素,请将Elements()调用更改为Elements("MGU").

这应该得到所有想要的元素。

使用给定的 xml

foreach (var v in ChildsOfNorm)
    Console.WriteLine(v.Value);

输出:

光伏 1401
光伏 1425
光伏 1448


推荐阅读