2016-07-04 6 views
0

나는 다음과 같은 코드를 사용하여 RSS를 읽고 있어요와 XML을로드사용 Syndicationfeed는 인코딩 된 링크

012,368,092,837,994이 경우 å %C3%A5로 인코딩)

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
    <channel> 
    <atom:link rel="self" type="application/rss+xml" href="http://example.com/rss" /> 
    <title>My RSS</title> 
    <description>My RSS</description> 
    <pubDate>Mon, 04 Jul 2016 08:19:50 +0200</pubDate> 
    <generator>RSS Generator 1.1</generator> 
    <link>http://example.com/rss</link> 
    <item> 
     <title>A title</title> 
     <description>A description</description> 
     <link>http://bl%C3%A5ljus.se</link> 
    </item> 
    </channel> 
</rss> 

예외는 다음과 같다

SyndicationFeed에 구문 분석 오류를 무시하도록 XML을로드 할 때 설정할 수있는 설정이 있습니까? 아니면 다른 해결책?

+1

xml은 정상이며 XmlReader는 정상입니다. 문제점은 문제의 근본 원인 인 SyndicationFeed 코드에 있다고 생각합니다. – jdweng

답변

1

문제는 Uri의 창조 것 같다 - 당신은이 코드를 재현 할 수 있습니다 :

var uri = new Uri("http://bl%C3%A5jus.se"); 

가능한 솔루션은 사전 처리를 위해 XML SyndicationFeed로로드하기 전에 링크 URL을 디코딩하는 것입니다 .

var doc = XDocument.Load(url); 

foreach (var link in doc.Descendants("link") 
{ 
    link.Value = WebUtility.UrlDecode(link.Value); 
} 

using (var reader = doc.CreateReader()) 
{ 
    SyndicationFeed.Load(reader); 
} 
+0

감사합니다. 'SyndicationFeed'가 그것을 해결할 수 있었으면 좋았을 텐데, 지금은 이것으로 갈 것입니다 :) – Joel