2016-04-28 11 views
0

Nur versuchen, ein einfaches XML-Dokument in XDocument Klasse zu lesen. Das Dokument ist gelesen, aber ich habe Schwierigkeiten, meine OperationConfig auf die XML-Mapping?C# LINQ zu XML - XDocument

var xml = XDocument.Load(path); 
var query = xml.Root.Elements("configaccount") 
    .Select(o => new OperationConfig() 
    { 
     AccountName = o.Attribute("accountname").Value, 
     Email = o.Attribute("email").Value 
    }); 

Die XML:

<?xml version="1.0" encoding="UTF-8"?> 
    <config> 
     <configaccount> 
      <accountname> 
       BusinessName 
      </accountname> 
      <email> 
       [email protected] 
      </email> 
     </configaccount> 
    </Config> 

nicht sicher, was ich verpasst habe, wie ich null Neuabstimmung bin?

Antwort

3

Sie müssen Nachfolgerknoten nach Name aus XML abrufen. Auch "accountname" und "email" sind keine Attribute, sondern ein Element von XML. Attribute sind ein inneres Element.

Ersetzen Sie Ihre Abfrage

var query = xml.Descendants("configaccount") 
     .Select(o => new OperationConfig 
     { 
      AccountName = o.Element("accountname").Value, 
      Email = o.Element("email").Value 
     }); 

Hope this Hilfe

+0

Sie betrachten könnte das Hinzufügen * warum * diese Abfrage funktioniert und warum das Original nicht. Ich glaube nicht, dass viel gelernt wird, wenn Sie einfach Ihre Lösung kopieren und einfügen. –

+0

Danke @CharlesMager, ich habe meine Antwort verbessert. –