如何将具有相同名称的节点的内部文本存储到List?

时间:2016-03-20 14:14:26

标签: c# xml list nodes

使用C#,我需要将Email节点内部文本的所有数据存储到一个列表中,并将Related节点内部文本的所有数据分别存储到每个人的列表中。现在我只能存储第一个"电子邮件"节点和第一个相关的"节点到列表。我明白了:

enter image description here

,当我得到这个

enter image description here

如何得到正确的答案?这是我的xml文件:

<? xml version="1.0" encoding="utf-8"?>
<People>
  <Person>
    <Name>Toni</Name>
    <Email>a@g.c</Email>
    <Email>b@g.c</Email>
    <Email>c@g.c</Email>
    <Related>Friend1</Related>
    <Related>Friend2</Related>
  </Osoba>
  <Osoba>
    <Name>Deni</Name>
    <Email>d@g.c</Email>
    <Email>e@g.c</Email>
    <Email>f@g.c</Email>
    <Related>Friend3</Related>
    <Related>Friend4</Related>
  </Osoba>
</People>

1 个答案:

答案 0 :(得分:1)

我假设以下xml而不是你发布的那个,因为它错了。

<?xml version="1.0" encoding="utf-8"?>
<People>
  <Person>
    <Name>Toni</Name>
    <Email>a@g.c</Email>
    <Email>b@g.c</Email>
    <Email>c@g.c</Email>
    <Related>Friend1</Related>
    <Related>Friend2</Related>
  </Person>
  <Person>
    <Name>Deni</Name>
    <Email>d@g.c</Email>
    <Email>e@g.c</Email>
    <Email>f@g.c</Email>
    <Related>Friend3</Related>
    <Related>Friend4</Related>
  </Person>
</People>

我正在使用LINQ to XML。(另一种方法是使用XmlDocument

        String path = "Path of your xml file";
        XDocument doc = XDocument.Load(path);
        var nodes = doc.Descendants("Person");
        foreach (XElement node in nodes)
        {
            var name = node.Element("Name").Value;
            var emails = node.Elements("Email").Select(x => x.Value);
        }