CDATA 섹션에는 기술적으로 다른 시작 태그 (<![CDATA[
)가 포함될 수 있습니다. 단지 문자 데이터로 해석됩니다. 포함 할 수없는 내용은 ]]>
입니다. 인코딩 할 때 사용자 제공 데이터에서 ]]>
으로 CDATA를 분할하는 것이 일반적인 방법입니다. Wikipedia :
CDATA 섹션에는 "]]>"문자열을 사용할 수 없으므로 CDATA 섹션에 중첩 된 CDATA 섹션을 포함 할 수 없습니다. 트라이어드 "]]>"가 포함 된 텍스트를 인코딩하기 위해 CDATA 섹션을 사용하는 바람직한 방법은 ">"직전의 트라이어드를 각각 분리하여 여러 CDATA 섹션을 사용하는 것입니다.예를 들어, 인코딩하는 "]]>"하나 작성합니다
<![CDATA[]]]]><![CDATA[>]]>
이 인코딩에 "]]>"CDATA 섹션의 중간에,] "의 모든 항목을 대체한다는 것을 의미] > "와 다음이 효과적으로 중지하고 CDATA 섹션을 다시 시작
]]]]><![CDATA[>
합니다.
[종료 위키 백과 견적]
그 무엇을하고 있는지를 참조하십시오? (. 공백이 강조 추가) - 당신의 XML 프로세서에 의해 디코딩하는 동안 다시 함께 넣어 당신이 >
옆에 ]]
로 인코딩 된 ]]>
를 얻을
<![CDATA[ ]] ]]>
<![CDATA[ > ]]>
그래서 : 효과적으로, 당신이와 끝까지 것은 문자 데이터로 ]]>
으로 끝나게되지만 ]]>
은 CDATA 섹션에서 실제로 발생하지 않습니다.
그러나 이 날에 걱정할 필요가 없습니다.이에 대해 걱정할 필요가 없습니다. XML을 작성하기 위해 사용하는 도구/라이브러리가 무엇이든간에 간단히 관리해야하며, XML의 요소에 문자 데이터를 던지면 문자 데이터로의 변환은 XML 라이브러리가 적합한 방식으로 자동으로 수행되어야합니다. 당신이 그것에 대해 생각할 필요없이 모든 필요한 탈출.
악의적 인 사용자 데이터에 대해 염려하는 것이 좋지만,이 경우 가장 좋은 방법은 누군가가 이미 당신을 염려하고있는 성숙한 라이브러리를 적절하게 사용하는 것입니다. 당신이 당신의 자신의 XML 라이브러리를 작성하는 이유는
CDATA 섹션 내에서
로 교체? 이미 많은 성숙한 것들이 있습니다. – Quentin
@Quentin : 서버와 데스크탑에는 실제 작업에 필요한 충분한 라이브러리가 있습니다. 하지만 임베디드 시스템 (안드로이드)을 위해 개발했습니다. 그리고 거기에 필요한 libs 버전 2.2 이후에서만 사용할 수 있습니다. 그러나 우리는 고객에게 적어도 2.0 호환성을 약속했습니다. 하지만 저는 "진짜"프로그래머입니다. 직접 해보니 신경 쓰지 않아도됩니다. 대답이 받아 들여지지 않을 수도 있지만 때로는 대답이 "당신이 잘못하고 있습니다.이 대안을 시도하십시오"라고 받아 들일 수 있습니다. CDATA를 더 이상 사용하지 않고'<> & " '대신에 인코딩을 선택했습니다 – Martin