2009-09-29 7 views
1

인트라넷 사이트에 원격 RSS 피드를 표시하는 데 너무 오래 걸립니다. MM_ XSLTransform.cfc 버전 0.6.2를 사용하여 피드를 가져오고 기본 xsl을 출력합니다. 피드 URL은 www.fedsources.com/FedsourcesNet/RssFeeds/RSS_MarketFlash.aspx입니다. 브라우저에서 열면 일반 RSS 피드처럼 보입니다. 하지만 CF로 표시하려고하면 다음과 같은 "MM_ XSLTransform 오류가 발생합니다. www.fedsources.com/FedsourcesNet/RssFeeds/RSS_ MarketFlash.aspx는 유효한 XML 문서가 아닙니다. 구문 분석 www.fedsources.com/FedsourcesNet/RssFeeds/RSS_ MarketFlash.aspx XML 문서를 구문 분석하는 동안 오류가 발생했습니다. 프롤로그에서 내용을 사용할 수 없습니다. " (실제 오류는 URL에 http : //를 포함 시켰습니다.) 그러면 오류 메시지의 일부로 피드가 덤프됩니다.
특히 RSS 소스를보고 복사하여 텍스트 파일에 붙여 넣으면 그 텍스트 파일을 구문 분석하면 괜찮아요. CF 버전 7을 실행 중입니다.
UTF-8에서 windows-1252로 문자 세트를 변경하려고했지만 처음에는 이상한 문자가 추가되어 도움이되지 않았습니다. <channel>와 <item> 사이의 모든 것을 다 써 버렸지 만 도움이되지 않았습니다.
동일한 코드를 사용하여 방화벽 외부의 다른 RSS 피드를 성공적으로 구문 분석했습니다. 오류의 원인이되는 aspx 확장 프로그램에 대한 의견이 있습니까?
감사합니다.ColdFusion을 사용하여 원격 RSS 피드를 구문 분석하는 데 문제가 발생했습니다.

답변

3

XML 문서를 구문 분석하는 데 사용하는 코드는 무엇입니까? 이 특정 오류는 문서의 <?xml?> 태그 앞에 일부 데이터가있는 경우 일반적으로 발생합니다. 단 하나의 공백으로도 문제가 발생할 수 있습니다.

내가 언급 한 특정 CFC에 익숙하지 않아이 문제를 해결할 수는 없지만 구문 분석하려고하는 XML 콘텐츠 주위에 잘라 내기 기능을 사용해야합니다.

UPDATE : 빠른 Google 검색이 벤 나델에서이 포스트를 알려준 : http://www.bennadel.com/blog/1206-Content-Is-Not-Allowed-In-Prolog-ColdFusion-XML-And-The-Byte-Order-Mark-BOM-.htm

당신은 피드에서 바이트 순서 마크를 제거해야합니다. 이 코드는 오류없이 작동합니다.

<cfhttp method="get" url="http://www.fedsources.com/FedsourcesNet/RssFeeds/RSS_MarketFlash.aspx" /> 
<cfset xmlResult = XmlParse(REReplace(cfhttp.FileContent, "^[^<]*", "", "all")) /> 
<cfdump var="#XMLParse(xmlResult)#" /> 
+0

Daniel, 감사합니다. 그랬어. 어제 Ben Nadel의 사이트에서 관련 정보를 발견했지만 어떻게 든 그 특정 게시물을 놓쳤습니다. 나는 단지 내가 stackoverflow로 빨리 돌았 더라면 좋겠다! – Arcster

+0

당신은 환영합니다 :) –

관련 문제