2015-02-23 3 views
1

Я пытаюсь разобрать HttpWebRequest от Yandex-Fotki (Image Hoster). Я получаю ответ в Atom-Format, но в SyndicationFeed я получаю сообщение об ошибке: Элемент с именем 'service' и namespace 'http://www.w3.org/2007/app' не является допустимым форматом фида.Ошибка при разборе ответа Atom

Мой код:

XmlReader reader = XmlReader.Create(new StringReader(response)); 
      SyndicationFeed feed = SyndicationFeed.Load(reader); 

Здесь вход (реакция с сайта):

<app:service xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom"> 
    <app:workspace> 
    <atom:title>packda на Яндекс.Фотках</atom:title> 
    <app:collection href="http://api-fotki.yandex.ru/api/users/packda/albums/" id="album-list"> 
     <atom:title>Все альбомы пользователя packda</atom:title> 
     <app:accept>application/atom+xml; type=entry, application/json; type=entry</app:accept> 
    </app:collection> 
    <app:collection href="http://api-fotki.yandex.ru/api/users/packda/photos/" id="photo-list"> 
     <atom:title>Все фотографии пользователя packda</atom:title> 
     <app:accept>image/*</app:accept> 
     <app:categories scheme="http://api-fotki.yandex.ru/api/users/packda/tags/" /> 
    </app:collection> 
    <app:collection href="http://api-fotki.yandex.ru/api/users/packda/tags/" id="tag-list"> 
     <atom:title>Все теги пользователя packda</atom:title> 
     <app:accept /> 
    </app:collection> 
    </app:workspace> 
</app:service> 

Я надеюсь, что вы можете мне помочь!

ответ

1

SyndicationFeed будет анализировать только XML с Atom или RSS Формат синдикации. Ответ сайта Yandex-Fotki, похоже, не является ни тем, ни другим.

Хорошо, я нашел то, что, возможно, это то, что вы ищете. Если вы сделаете запрос в своем веб-браузере значения <collection href="http://api...">, вы получите XML в формате Atom Syndication.

enter image description here

Это XML вы должны разобрать с SyndicationFeed. Таким образом, вы должны получить значение href элементов коллекции, получить этот XML и загрузить его в SyndicationFeed. Чтобы удалить элементы коллекции, вы можете попробовать:

Прочитать DOM с помощью XMLReader ИЛИ Удалить его в пользовательский класс ИЛИ загрузить XML в DataSet или LINQ to XML.

+0

Можно ли проанализировать этот файл как файл xml или мне нужно получить каждый элемент с помощью XDocumen/XElement? – Diddlik

+0

Да. Я думаю, что это возможно. – jlvaquero

+0

Глупый вопрос: может быть, вы знаете, как? ;) – Diddlik

Смежные вопросы