2013-01-22 3 views
2

W3C 유효성 검사기를 사용하여 유효성을 검사 할 RSS 피드를 만들려고합니다. 나는 문자 £, ` 또는 여기다음 문자를 사용하는 XML이 유효하지 않습니다. £`-

-를 포함하는 다음 URL에서 문제가 계속하면 URL이 있습니다

이 피드를 확인하지 않습니다

http://www.example.co.uk/news/2012/april/stamp-rationing-–-why-the-royal-mail-are-ripping-you-off 

다음은 오류입니다. 줄 14, 열 119 : 링크는 완전하고 유효한 URL이어야합니다. http://www.example.co.uk/news/2012/april/stamp-rationing- - 로얄 메일 - 찢어 - 너 - 오프 [도움] ... - 왜 - 로얄 메일 -are-ripping-you-off

나는 이스케이프 문자로 기호를 바꾸려고했지만이 방법은 효과가 없습니다. 다음은 내가 사용하고있는 이스케이프 문자입니다.

Text = Text.Replace("-", "&#45"); 
      Text = Text.Replace("£", "%C2%A"); 
      Text = Text.Replace("`", "%60"); 
      Text = Text.Replace("’", "%60"); 

아무도이 문제를 해결하는 방법을 알고 있습니까? 다음은 나에게 문제를 일으키는 일부 더 많은 링크는 다음과 같습니다

http://www.example.co.uk/news/2012/march/for-sale-3-bed-detached-london-home- £ 15,000

오류 :이 피드는 확인하지 않습니다

. 라인 (14), 열 (106) : 링크는 완전하고 유효한 URL이어야합니다 http://www.example.co.uk/news/2012/march/for-sale-3-bed-detached-london-home- £ 15,000 [도움말] ... -sale-3-침대 분리 - 런던 - 홈 - 내가 짓고 있어요 £ 15,000

+0

대시가 잘되어야합니다. 문제가 발생했는지 확인하십시오. – Oded

답변

3

당신은 RSS에 게시하기 전에 URL encode URL이 필요합니다 인코딩 됨.

이 값을 유효한 XML로 사용하려면 SecurityElement.Escape을 대신 사용하십시오.

var escaped = SecurityElement.Escape(aUrl); 
0

내 시스템을위한 API, 그리고 필드를 정상화하기 위해 몇 가지 물건을 사용 해왔다. PHP와이 필터링보십시오 : URL이, / 등 의지도 :로 직접 사용할 수 없음을

var encoded = HttpUtility.UrlEncode(aUrl); 

참고 :

$value = preg_replace('/[^a-z]/i', '', $value); 
$value = preg_replace('/[^\x09\x0A\x0D\x20-\x7F]/e', '"&#".ord($0).";"', $value); 
$value = htmlentities($value, ENT_NOQUOTES, 'UTF-8', false); 
+0

안녕하세요, 멋져 보이지만 불행히도 PHP로 개발하지 않아요. C#을 사용합니다. – Funky

+0

preg_replace 부분에서 다음과 같이 할 수 있다고 생각합니다. http://stackoverflow.com/questions/166855/c-sharp-preg - 대체; 그리고 htmlentities 당신이 아마 이것을 확인하고 싶습니다 :) http://stackoverflow.com/questions/1891134/convert-special-chars-to-html-entities-without-changing-tags-and-parameters –

0

답변은 UTF-8 인코딩을 사용하거나 비 ASCII 문자를 XML 엔터티로 변환하는 것입니다.

  • UTF-8 인코딩 : 문서가 UTF-8로 출력되고 관련 인코딩 헤더가 포함되어 있는지 확인하십시오.

    UTF-8 encoding xml in PHP

  • 엔티티 인코딩을 참조하십시오 : XML 엔티티에 모든 비 ASCII 문자를 변환합니다.

    XML 엔터티는 £ (이 중 하나는 £ 기호)입니다. 대부분의 프로그래밍 언어는 XML 문서를 생성 할 때 자동으로이 작업을 수행하거나이를 수행하기위한 표준 기능을 제공합니다. 사용중인 언어를 지정하지 않았지만 위의 코드는 적절한 API 함수를 찾는 데 도움이됩니다.당신이 일을해서는 안

한 가지 수동으로 XML 데이터를 생성 (즉, 출력 태그와 문자열로, 속성), 또는 문자열로 대체 수동 엔티티. 당신은 그것에 대한 적절한 API를 사용해야합니다. 수동으로 XML (또는 다른 표준 데이터 형식)을 생성하는 것은 항상 이와 같은 문제로 끝날 수 있습니다. 도구가 제대로 작동하려면 앞에서 도구가 제대로 작동하는 것이 어렵습니다. .

관련 문제