2010-01-26 4 views
1

문서 노드 중 하나에 포함 된 CSS 형식의 데이터가 & 인 XML 데이터 원본이 있습니다. 이 데이터를 올바르게 파싱 할 수 있도록 적절한 방법은 무엇입니까? 설명을 위해 Objective-C에서 TouchXML을 사용하여 데이터를 구문 분석합니다. (중요한 것은 아니지만 모든 관련 정보를 포함하고 싶었습니다.)XML 문서 내에서 HTML 및 CSS의 올바른 이스케이프 포맷은 무엇입니까?

도움이 될만한 정보가 있습니다. 고맙습니다!

L.

답변

3

난 당신이 HTML 마크 업, XHTML이 아니 혼합물 문서에 얽혀 XML 데이터가 포함 된 노드가됩니다 XML 데이터가 있으리라 믿고있어.

이 경우 일반적으로 HTML 데이터에 CDATA blocks을 사용하는 것이 좋습니다. 이렇게하면 원하는 HTML을 넣을 수 있습니다. HTML 문서를 XML 문서에 일반 노드로 추가하려고하면 XML에 의해 올바르게 인식되기 위해 문자 엔티티를 정의해야한다는 사실뿐만 아니라 항상 100 % XML을 준수하지는 못하기 때문에 문제가 발생할 수 있습니다 파서.

<xmlNode> 
<![CDATA[ 

<Any> 
    <Html> 
     <Tags> 
      <You> 
       <Want /> 
      </You> 
     </Tags> 
    </Html> 
</Any> 

]]> 
<xmlNode> 
+1

HTML 및 CSS에 "]]>"문자열이 표시 될 수 있으므로 CDATA 블록이 부주의하게 종료되지 않도록주의해야합니다. "]]>"]]]> "(예 : CDATA 블록의 끝 부분을 순서대로 끝내고 새 CDATA 블록을 시작하여)을 수행하면됩니다. 다른 방법은 CDATA 블록 대신 &를 사용하는 것입니다. CDATA 블록을 사용하든 (& C) 사용 하든지에 관계없이 XML 구문 분석기에 똑같이 적용됩니다. –

+0

@Laurence, 귀하의 요점은 유효하지만, CDATA가 (내 지식으로는) HTML에서 공통적이지 않으므로 표시 할 이스케이프 처리되지 않은 시퀀스를 포함하는 경우는 거의 없기 때문에 문자열 "]]>"이 나타나지 않을 것입니다 브라우저에서 정기적으로 출력합니다. 분명히 고려해야합니다. –

+1

"가능성 없음"이 실제로 발생했을 때 나중에 물릴 수있는 손을 흔드는 접근법을 사용하는 코드를 많이 보았습니다. –

관련 문제