使用C#,我需要将Email节点内部文本的所有数据存储到一个列表中,并将Related节点内部文本的所有数据分别存储到每个人的列表中。现在我只能存储第一个"电子邮件"节点和第一个相关的"节点到列表。我明白了:
,当我得到这个
如何得到正确的答案?这是我的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>
答案 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);
}