HTML5 마스터Q&A는 HTML CSS JavaScript 개발자들의 질문과 답변을 위한 커뮤니티 사이트입니다.

스마트티비 개발 관련 xml파싱 문제 입니다. [closed]

0 추천
저희 회사에서 스마트티비에 관한 지식이 없어 외주를 준 상태 입니다.

그런데 외주업체로 부터 xml파싱을 할 수 없다는 전달사항을 받았는데....

이것이 맞는 말인가요??? 제이슨은 되고 xml은 안된다???

뭐 크로스도메인을 제이슨은 피할수 있는데 xml은 못한다 그러는데 맞는 말인지요???
질문을 종료한 이유: 아주 정확한 답변이 달려 버렷습니다~~~!
ThisPlus (160 포인트) 님이 2013년 7월 17일 질문
ThisPlus님이 2013년 7월 22일 closed

1개의 답변

+1 추천
 
채택된 답변

크로스 도메인이 아니라고 하면 JSON이던 XML이던 상관없습니다. 하지만 크로스 도메인아라면 기본적으로 서버의 데이터를 가져오기 위해서 사용하는 XmlHttpRequest로의 요청이 가능하지 않습니다. 즉 JSON이던 XML이던 다 안됩니다. 그래서 크로스 도메인을 우회하기 위해 JSONP( http://en.wikipedia.org/wiki/JSONP )라는 기술을 사용합니다. 

JSONP를 사용하게 되면 서버에서 데이터를 되돌려줄때 단순한 JSON데이터 자체가 아니라 JavaScript코드를 가져오게 됩니다. 예를 들어 {text:'abcd', number:1234}가 아니라 callback 함수를 쿼리로 받아 JSONP포맷에 맞춰서 되돌려주죠. callback({text:'abcd', number:1234}); JSONP는 많이 사용하기 때문에 jQuery라이브러리등에 다 구현이 되어있습니다. 쉽게 쓸수 있죠.

1. XML을 반드시 사용해야 한다면 XML을 JSON안으로 포함시키는 방법도 있을수 있습니다. 물론 그 경우에 escape를 잘해야할거구요 예를 들어 callback({xml:'<xml></xml>'}); 이런식으로 할수는 있죠. 어쨌든 서버에서 나오는 결과물을 고쳐야하고 클라이언트에서 어떻게 처리할지 약속을 잘잡아야겠죠.  

2. 만약 서버를 전혀 건드릴수 없고 생성되는 XML문서를 고칠수 없다면! 크로스 도메인을 해결하는 방식으로 가셔야합니다. 그럴려면 현재 도메인의 서버에서 프록시로 처리해야겠죠. 프록시 방식중에 외국의 게시물들을 보면 YQL을 이용하는 경우도 있습니다만 굳이 또 다른 외국의 서버를 공유하는 것이니 국내에서는 해결책으로 쓰기 뭐하죠.

회색 (2,140 포인트) 님이 2013년 7월 19일 답변
ThisPlus님이 2013년 7월 22일 채택됨
아~~~! 정말 명쾌한 해답입니다~~!
제가 알고자 하던 모든 부분이 전부 들어 있는 대답입니다..
감사합니다.
...