2009-07-16 10 views
0

Ich mache wahrscheinlich etwas wirklich dumm, aber ich kann diese an die Arbeit:Abfrage einfach XDocument in LINQ

var xmlQuery = from i in doc.Descendants("Item") 
    select new TriggerItem() 
    { 
    CreatedDate = DateTime.Now, 
    ItemIdentifier = i.Attribute("itemCode").Value, 
    Name = i.Attribute("name").Value, 
    ProductIdentifier = (i.Attribute("productCode") != null) ? i.Attribute("productCode").Value : null 
    }; 

doc ist ein XDocument-Objekt, das beim Debuggen, ich es das folgende XML geladen hat, wird bestätigen können :

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<Items xmlns="http://mywebsite"> 
<Item itemCode="12345" productCode="" name="testing" categoryId=""> 
</Item> 
</Items> 

so xmlQuery.Count() shud 1 zurückzukehren, als ein Artikel in ther, aber es hält 0 Rückkehr!

iv auch versucht:

xmlQuery = from i in doc.Descendants("Items") 

und

xmlQuery = from i in doc.Descendants("Item") 

Auch ohne ein neues TriggerItem Objekt zu erstellen, wird es nichts zurück ... irgendwelche Ideen ?? : '(

Antwort

1

Ich weiß, XML, so kann ich Ihnen sagen, dass das Element Element in der ‚http://activepromotion.net/Data/TriggerItems/1.0‘ Namespace ist, aber Sie sind für sie im Standard-Namespace suchen

Ich weiß LINQ nicht zu. XML gut genug, um Ihnen sagen, wie das zu tun, aber.

+0

Vielen Dank, ich entfernt die xmlns attrbute und es hat funktioniert, wo geht das wirklich? Oder muss es überhaupt da sein? Alles, was ich in diesem XML machen will, ist, es zu sagen Wenn das XSD platziert wird, bleibt es eindeutig –

+0

Die Seite http://tempuri.org/ gibt eine gute Erklärung, wofür ein XML-Namespace steht, und bietet Links zu weiteren Informationen. Lassen Sie sich nicht davon abschrecken, dass auf der Seite über Web-Services gesprochen wird. –

+0

Vielen Dank noch einmal! –

7

Sie müssen den Namespace angeben, so etwas wie ....

XNamespace ns = XNamespace.Get("yourURI"); 
var qry = from i in doc.Descendants(ns + "Items").... 
+1

Ich wünschte, ich könnte das noch ein paar Mal verbessern! – lazo

+0

Du bist ein Lebensretter :-) – DilbertDave