2017-01-26 3 views
3

У меня есть XML-документ, который выглядит следующим образом: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">[email protected]</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); 
      } 

Это не работает. Любые мысли о том, как я могу получить адреса электронной почты от этого типа XML XDocument в C#? Я посмотрел на нескольких форумах и учебники, но я не могу показаться, чтобы получить ручку на XPaths и т.д.

+3

сообщения электронной почты не так же, как сообщения электронной почты, по крайней мере –

+0

Кроме того, необходимо хорошо сформированный xml. Тег Resources не закрыт. –

+0

@PalleDue - Спасибо, что поймали это тоже, это была просто ошибка, когда я редактировал содержимое XML для публикации в Интернете. У меня были ценности, которыми я не мог поделиться с миром. Спасибо, хотя – VinnyGuitara

ответ

1
var emails = xmlContent.Root.Elements("Resources").Elements("item").Elements("emails"); 
     foreach (XElement elem in emails) 
     { 
      Console.Write(elem.Value); 
     } 

Это работает. У вас была орфографическая ошибка. XML чувствительны к регистру

+0

Это правильный ответ. Спасибо, что поймал это для меня. – VinnyGuitara

2
XDocument xdoc = XDocument.Load(new StringReader("<root ...")); //// load xml file 
var emails = xdoc.Descendants("Resources").Descendants("emails").ToList(); //// select all emails 

Я использую Descendants, потому что он находит ребенок на любом уровне, и он ищет все поддерево, но Elements находит только непосредственные ребенок

Смежные вопросы