2009-07-16 1 views
0

Я, вероятно, делать что-то действительно глупо, но я не могу получить эту работу:Query простой XDocument в 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 
    }; 

документ является объектом XDocument, который при отладке, я могу подтвердить, что загружен следующий XML :

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

так xmlQuery.Count() изгоняются возвращает 1, в качестве одного пункта в THER, но он продолжает возвращаться 0!

IV также пытался:

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

и

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

Даже без создания нового объекта TriggerItem, он не будет ничего возвращать ... какие-либо идеи ?? : '(

ответ

1

Я знаю XML, так что я могу вам сказать, что элемент Item находится в „http://activepromotion.net/Data/TriggerItems/1.0“ имен, но вы ищете для этого в пространстве имен по умолчанию

Я не знаю, LINQ к. XML достаточно хорошо, чтобы сказать вам, как сделать это, хотя.

+0

Спасибо так много, я удалил XMLNS attrbute и он работал, где действительно ли это xmlns на самом деле? Или он даже должен быть там? Все, что я хочу сделать в этом xml, это сказать это XSD размещено и сохранить его уникальным. – 2009-07-16 12:42:31

+0

Страница на странице http://tempuri.org/ дает хорошее объяснение того, для чего используется пространство имен XML, и предоставляет ссылки на дополнительную информацию. Не следует отвлекаться на то, что страница рассказывает о веб-сервисах. –

+0

Еще раз большое спасибо! – 2009-07-16 13:07:57

7

Вы должны указать пространство имен, что-то вроде ....

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

Жаль, что я мог бы поддержать это еще несколько раз! – lazo

+0

Ты спасатель :-) – DilbertDave