Запрос простого XDocument в LINQ - PullRequest
0 голосов
/ 16 июля 2009

Я, вероятно, делаю что-то действительно глупое, но я не могу заставить это работать:

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 - это объект 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 как один элемент, но он продолжает возвращать 0!

iv также пробовал:

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

и

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

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

Ответы [ 2 ]

7 голосов
/ 17 июля 2009

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

XNamespace ns = XNamespace.Get("yourURI");
var qry = from i in doc.Descendants(ns + "Items")....
1 голос
/ 16 июля 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...