将具有属性的XML元素写入列表

时间:2018-07-24 08:52:43

标签: c# xml linq-to-xml

我有此XML文件,并希望将下具有属性Name =“ TL 52146”的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>

预期结果将是:

  • PV 1401
  • PV 1425
  • PV 1448

使用此代码时,我只得到一个包含所有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;

有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

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

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);

输出:

  

PV 1401
  PV 1425
  PV 1448