我有一个XML文档,如下所示:
<root type="object">
<totalResults type="number">x</totalResults>
<itemsPerPage type="number">x</itemsPerPage>
<startIndex type="number">x</startIndex>
<schemas type="array">
<item type="string">x</item>
</schemas>
<Resources type="array">
<item type="object">
<schemas type="array">
<item type="string">x</item>
</schemas>
<id type="string">x</id>
<externalId type="null"></externalId>
<meta type="object">
<created type="string">x</created>
<location type="string">x</location>
</meta>
<userName type="string">x</userName>
<emails type="array">
<item type="object">
<value type="string">x.x@x.com</value>
<primary type="boolean">x</primary>
</item>
</emails>
</item>
</Resources>
</root>
我正在尝试获取这样的电子邮件地址:
var emails = xmlContent.Root.Elements("Resources").Elements("item").Elements("Emails");
foreach (XElement elem in emails)
{
Console.Write(elem.Value);
}
这不起作用。有关如何从C#中获取此类XML XDocument的电子邮件地址的任何想法?我已经浏览了几个论坛和教程,但我似乎无法掌握XPath等。
答案 0 :(得分:2)
XDocument xdoc = XDocument.Load(new StringReader("<root ...")); //// load xml file
var emails = xdoc.Descendants("Resources").Descendants("emails").ToList(); //// select all emails
我使用Descendants
,因为它会在任何级别找到子级并搜索整个子树,但Elements
只能找到直接子级
答案 1 :(得分:1)
var emails = xmlContent.Root.Elements("Resources").Elements("item").Elements("emails");
foreach (XElement elem in emails)
{
Console.Write(elem.Value);
}
有效。你有拼写错误。 XML区分大小写