Linq To Xml-Probleme mit der XElement-Methode Elements (XName)

Ich habe ein Problem mit Linq To Xml.

Ein einfacher Code. Ich habe diese XML:

<?xml version="1.0" encoding="utf-8" ?>
<data xmlns="http://www.example.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.com/directory file.xsd">
<contact>
 <name>aaa</name>
 <email>[email protected]</email>
 <birthdate>2002-09-22</birthdate>
 <telephone>000:000000</telephone>
 <description>Description for this contact</description>
</contact>
<contact>
 <name>sss</name>
 <email>[email protected]</email>
 <birthdate>2002-09-22</birthdate>
 <telephone>000:000000</telephone>
 <description>Description for this contact</description>
</contact>
<contact>
 <name>bbb</name>
 <email>[email protected]</email>
 <birthdate>2002-09-22</birthdate>
 <telephone>000:000000</telephone>
 <description>Description for this contact</description>
</contact>
<contact>
 <name>ccc</name>
 <email>[email protected]</email>
 <birthdate>2002-09-22</birthdate>
 <telephone>000:000000</telephone>
 <description>Description for this contact</description>
</contact>

Ich möchte, dass jeder Kontakt ihn einem Objekt Contact zuordnet. Dazu benutze ich dieses Codefragment:

XDocument XDoc = XDocument.Load(System.Web.HttpRuntime.AppDomainAppPath + this.filesource);
XElement XRoot = XDoc.Root;
//XElement XEl = XElement.Load(this.filesource);
var results = from e in XRoot.Elements("contact") 
 select new Contact((string)e.Element("name"), (string)e.Element("email"), "1-1-1", null, null);
List<Contact> cntcts = new List<Contact>();
foreach (Contact cntct in results) {
 cntcts.Add(cntct);
}
Contact[] c = cntcts.ToArray();
// Encapsulating element
Elements<Contact> final = new Elements<Contact>(c);

Ok nur nichts dagegen, dass alle: konzentrieren sich auf diese:

Wenn ich den Wurzelknoten bekomme, ist alles in Ordnung, ich bekomme es richtig.

Wenn ich die select-Direktive verwende, versuche ich, jeden Knoten dazu zu bringen, zu sagen: from e in

XRoot.Elements("contact")

OK hier ist das Problem: Wenn ich Folgendes verwende: von e in XRoot.Elements () bekomme ich alle Kontaktknoten, aber wenn ich Folgendes verwende: von e in XRoot.Elements ("contact") ERHALTE ICH NICHTS: Leere SET.

OK du sagst mir: Benutze den anderen: OK ICH TUE SO, lass uns benutzen:from e in XRoot.Elements(), Ich bekomme sowieso alle Knoten, DAS IST RICHTIG, ABER HIER KOMMT DAS ANDERE PROBLEM: Wenn ich sage:select new Contact((string)e.Element("name"), (string)e.Element("email"), "1-1-1", null, null); Ich versuche auf @ zuzugreif<name>, <email> ... ICH MUSS .Element ("name") VERWENDEN UND ES FUNKTIONIERT NICHT AUCH !!!!!!!! WAS IST DAS ???????????? Es scheint, dass ich den Namen, den ich vergebe, nicht anpasse. Aber wie ist das möglich? Ich weiß, dass die Elements () - Funktion ein überladenes Argument benötigt, das ein XName ist, der auf eine Zeichenfolge abgebildet wird. Bitte beachten Sie, dass der von mir geschriebene Code aus einem Beispiel stammt. Es sollte funktionieren.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage