2011-02-10 3 views
2

많은 URL이 포함 된 meml을 검색하는 웹 서비스를 사용하고 있습니다. 나는 그것을로드하는 코드 아래 사용하고 있습니다 :XML 데이터의 앰퍼샌드가 XML로드를 허용하지 않습니다.

XmlDocument xdoc = new XmlDocument(); 
xdoc.Load(fileName.Trim()); 

어떤 앰퍼샌드 모든 요소의 내용에 있으면 내 XML을로드 할 수는 할 수 없습니다. 내 XML과 같은 것입니다 :

<media:thumbnail url="http://someurl/player/mezzanine/image.php?w=124&h=99&path=ndtv/a79d98c3030c041e0033105943c1b668_mezzn.jpg&hash=23991c2513a8e359d120840e6f897d4d" width="124" height="70" /> 
<media:fullimage url="" width="350" height="196" /> 

참고 : 내가 다른 공급자로부터이 무엇입니까로 난, 웹 서비스에서 변경을 할 수 없습니다. 도와주세요. 감사

내가이 예외를 얻고있다 :

System.Xml.XmlException는 '='예기치 않은 토큰입니다. 예상되는 토큰은 ';'입니다. 당신이 그들의 "XML"을 해결하기 위해 제공자를 얻을 수없는 경우이 행에 라인 (753), 위치 89

<media:thumbnail url="http://someurl/player/mezzanine/image.php?w=124&h=99&path=ndtv/a79d98c3030c041e0033105943c1b668_mezzn.jpg&hash=23991c2513a8e359d120840e6f897d4d" width="124" height="70" /> 
+6

글쎄, 그건'잘못된 XML'입니다. 당신은 또 무엇을 기대합니까? 캐릭터는 ** 반드시 이스케이프되어야합니다 **. – Aliostad

+7

어리석은 멍청한 공급자. 누구도 컴파일하지 않는 라이브러리를 제공 할 수 있습니까? 나는 그것을 의심한다. 그래도 올바른 마크 업을 제공하는 데 신경 쓰이는 사람은 거의 없습니다. delnan

+0

예외가 있습니까? 그렇다면 스택 추적 및 예외 소스를 게시하십시오. –

답변

3

으로 url의 각 & 교체 가장 쉬운 방법은 이러한 종류의 문제를 보완하고 처리 할 수있는 올바른 형식의 XML 파일을 반환하려고 시도하는 Tidy .NET과 같은 유틸리티를 통해 실행하는 것입니다.

+1

나는 동의하지 않는다. 공급자가 "XML"을 수정하지 못하면 그 XML을 지옥으로 가져 가야합니다. 이것은 XML 101입니다. 이 파일은 XML 편집기에서도로드 할 수 없습니다. 그 (것)들과 가진 사업을해서이 바보를 가능하게하지 말라. –

+0

@john : 전적으로 당신에게 동의합니다. –

+0

@ John Saunders - 문제를보고하고 제작자에게 깨진 "XML"을 수정하는 것이 훨씬 낫다는 것에 동의합니다. . 그러나 항상 힘, 영향 또는 시간의 고급 스러움이있는 것은 아니며 변경을 강제하는 것은 항상 가능하지는 않습니다. 때로는 원하는 결과를 얻기 위해 데이터를 올바르게 형식화하기 위해 서비스 조정 전략/도구를 사용해야합니다. 이상적인 것은 아니지만 깨진 신디케이션 피드를 수정하면 언제든지 조정할 수있는 실용적인 솔루션입니다. –

2

후, &amp;

+0

@abatischev : 나는 xml.load에서 XML의 directrly url을 전달하고로드하는 동안 오류가 발생하여 어떻게 대체 할 수 있습니까? –

+2

@Rajesh Rolen-DotNet Developer에서 xml을 문자열 ('TextReader')로 읽을 수 있습니다. string.Replace()를 수행 한 다음 xmlDoc.LoadXml (string)을 호출하십시오. –

2

&&amp;으로 바꾸면 IE 클라이언트 측 XML 파서에 대해 동일한 라이브러리라고 가정합니다. 흥미롭게도 FF에는 큰 따옴표 사이에 & 문자가있는 문제가 없었습니다.

관련 문제