2012-06-25 3 views
0
나는 다음과 같은 오류를 얻고있다

입니다 :16 진수 값 0x1f이이 잘못된 문자

'', 16 진수 값 0x1f이, 여기 제 기능입니다 잘못된 문자

입니다. 처음으로 "reader.MoveToContent()"에 도달하면이 오류가 발생합니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

Public Function GetSyndicationFeedData(ByVal urlFeedLocation As String) As SyndicationFeed 

    Dim settings As New XmlReaderSettings() With { _ 
     .IgnoreWhitespace = True, _ 
     .CheckCharacters = True, _ 
     .CloseInput = True, _ 
     .IgnoreComments = True, _ 
     .IgnoreProcessingInstructions = True _ 
    } 

    If [String].IsNullOrEmpty(urlFeedLocation) Then 
     Return Nothing 
    End If 

    Using reader As XmlReader = XmlReader.Create(urlFeedLocation, settings) 
     If reader.ReadState = ReadState.Initial Then 
      reader.MoveToContent() 
     End If 

     ' Now try reading... 
     Dim atom As New Atom10FeedFormatter() 
     Dim rss20 As New Rss20FeedFormatter() 

     ' Atom 
     If atom.CanRead(reader) Then 
      atom.ReadFrom(reader) 
      Return atom.Feed 
      'Rss 2.0 
     ElseIf rss20.CanRead(reader) Then 
      rss20.ReadFrom(reader) 
      Return rss20.Feed 
     Else 
      Return Nothing 
     End If 
    End Using 
End Function 
+1

피드를 확인하여 올바른 XML 문서인지 확인 했습니까? – Kane

+0

http://validator.w3.org에서 피드를 확인했지만 유효합니다. 내 이해를 위해 0x1f는 Windows 제어 문자입니다. 어떤 사람들은 Replace ((char) (0x1F), '')를 사용하도록 제안했지만 어떻게 구현할지 모르겠습니다 ... –

답변

2

피드를 다운로드하고 문제가되는 문자를 바꾸려면 다음 코드를 사용하십시오 (죄송하지만 C#에 있음).

var client = new WebClient(); 
var feedAsString = client.DownloadString(urlFeedLocation).Replace((char)(0x1F), Convert.ToChar("")); 
using (XmlReader reader = XmlReader.Create(new MemoryStream(Encoding.Default.GetBytes(feedAsString)), settings)) 
{ 
    // remainder of your code here 
}