2011-04-27 5 views
1

블로그의 RSS 피드를 구문 분석하는 동안 문제가 발생합니다. 모든 요소가 내 수업에 들어가기는하지만 실제 내용을 포함하는 요소는 항상 비어 있습니다. 이 구문 분석하지 않는 것 XML 라인 그게XDocument/XElement를 사용하여 XML 데이터 구문 분석

<content:encoded>THIS IS FULL OF HTML </content:encoded>

. 콜론이있는 단 하나 뿐인데 HTML 데이터가 들어있는 단 하나뿐입니다. 다른 이들은 이렇게 보입니다.

<title> 
An amazing Title 
</title> 
<link> 
More Junk 
</link> 
<comments> 
Comments and things 
</comments> 

아래 코드는 다른 모든 요소를 ​​잘 처리합니다. 어떤 아이디어? 콘텐츠에 대한 아니라 인코딩을 찾고있는 것처럼

+0

RSS 피드를 가르쳐 주시겠습니까? 또한 다음과 같은 RSS 유효성 검사기를 통해 실행할 수도 있습니다. http://www.rssboard.org/rss-validator/ –

답변

1

이 보이는

allPosts = (from x in feed.Descendants("item") 
         select new blogPost 
         { 
          Creator = (string)x.Element("creator"), 
          Title = (string)x.Element("title"), 
          Published = DateTime.Parse((string)x.Element("pubDate")), 
          Content = (string)x.Element("content"), 
          Description = (string)x.Element("description"), 
          Link = (string)x.Element("link"), 
         }).ToList<blogPost>(); 

감사합니다. 콘텐츠는 인코딩 된 요소와 연결된 XML Namespace입니다.

XNamespace contentNS = "<whatever the namespace is>"; 

allPosts = (from x in feed.Descendants("item") 
         select new blogPost 
         { 
          Creator = (string)x.Element("creator"), 
          Title = (string)x.Element("title"), 
          Published = DateTime.Parse((string)x.Element("pubDate")), 

          // Looking for content:encoded 
          Content = (string)x.Element(contentNS + "encoded"), 

          Description = (string)x.Element("description"), 
          Link = (string)x.Element("link"), 
         }).ToList<blogPost>(); 
contentNS의 값은 원래의 XML의 존재에 따라 달라집니다

이하는 XMLNS을 찾아보십시오 : 당신이 필요한 것은 그것을 위해 적절한 XNamespace를 정의하고 쿼리에 추가되는 콘텐츠 정의 루트 요소.

+0

알아 냈습니다. 내가 가지고있는 문제는 파일에 xmlns : content 정의가 없다는 것입니다. 나는 결국 일부 RSS 문서를 온라인에서 살펴봄으로써 그것을 발견했다. 파일에 포함되지 않은 이유는 확실하지 않습니다. – Woody