2011-01-15 6 views
2

Вот мой пример XML:XElement обыкновение возвращать любой носитель: содержание/Xmlns: СМИ брейки XElement

<rss version='2.0' xmlns:media='http://search.yahoo.com/mrss/'> 
<channel> 
    <title>Title of RSS feed</title> 
    <link>LINK</link> 
    <description>Details about the feed</description> 
    <language>en</language> 
    <item> 
     <title>TITLE</title> 
     <media:content url='http://LINK' type='' xmlns:media='http://search.yahoo.com/mrss' /> 
    </item> 
</channel> 
</rss> 

Мой код:

XElement rss = XElement.Parse(xml); 
XNamespace media = "http://search.yahoo.com/mrss/"; 

var item = rss.Element("channel").Elements("item").First(); 
var mediaa = item.Element(media + "content"); //this part doesn't work as expected 
var url = mediaa.Attribute("url"); 

, кажется, как будто "xmlns:media='http://search.yahoo.com/mrss'" частью media:content бирка ломается .Element(media + "content"). (я не могу изменить канал)

ответ

0

Неверное пространство имен. В конце нет «/».

+0

Спасибо, что сделал. – Faleij

-1

Если это будет

XNamespace медиа = "{http://search.yahoo.com/mrss/}";

ie с фигурными брекетами?

+0

-1: нет, нет фигурных скобок. –

+0

Нет, это не помогает, поскольку я сказал, что часть xmlns: media разбивает элемент (media + «content»). (он работает, если xml не содержит xmlns: media в теге media: content tag) – Faleij

0

Это должно работать:

XNamespace media = XNamespace.Get("http://search.yahoo.com/mrss/"); 

Также обратите внимание, что вы должны исправить ее в средствах массовой информации: элемент контента, а также, он должен сказать

<media:content url='http://LINK' type='' xmlns:media='http://search.yahoo.com/mrss/'/>