2015-02-23 67 views
1

我嘗試從Yandex-Fotki解析HttpWebRequest(Image Hoster)。我以Atom格式獲得響應,但在SyndicationFeed中出現錯誤:名稱爲'service'且名稱空間爲'http://www.w3.org/2007/app'的元素不是允許的Feed格式。解析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 AtomRSS整合格式。網站Yandex-Fotki的迴應似乎並不是這樣。

好吧,我發現一件事情,也許這是你在找什麼。如果您在網頁瀏覽器中請求<collection href="http://api...">值,則會以Atom Syndication格式獲得XML。

enter image description here

這是你有SyndicationFeed解析XML。因此,您必須檢索集合元素的href值,獲取該XML並將其加載到SyndicationFeed中。要退出收集元素,您可以嘗試:

使用XMLReader讀取DOM或將其重定向到自定義類或將XML加載到DataSet或LINQ to XML中。

+0

是否可以像xml文件一樣解析這個文件,或者我必須使用XDocumen/XElement獲取每個元素? – Diddlik 2015-02-23 15:31:20

+0

是的。我認爲這是可能的。 – jlvaquero 2015-02-24 06:42:10

+0

一個愚蠢的問題:也許你知道如何? ;) – Diddlik 2015-02-24 09:45:36