2014-09-23 2 views
0

나는 XML 파일을 읽고이 파일을 발견했다. <![CDATA[]]>.XML CDATA를 사용하는 지점은 무엇입니까?

어떤 상황에서 유용할까요?

나는 그것이 사용되는 것으로 알고 있습니다;

XML 문서의 모든 텍스트는 파서가 구문 분석합니다.

그러나 CDATA 섹션의 텍스트는 파서에서 무시됩니다.

from here. 그러나 유용한 경우 및/또는 xml 파일/etc와의 관련성에 대해서는 자세히 설명하지 않습니다.

This SO question는 말은 무엇을 요구, 그러나 다시, 내가 그것을도 때 내가 그것을 사용해야합니까 무엇 으로 볼 수있는에서 너무 많은 세부 사항 - 지금이 질문을하고 이유입니다.

(내가 숙달 정확히 프로 아니에요,도 - 완전한 바보의 더 사실 확인 - 심지어 docs 실제로 도움이되지 않았다 읽기, 그래서 어떤 포괄적 인 답변은 좋은 것입니다 : P)

+0

나는 그것을 보았다. 그러나 내가 거기에없는 이유를 언급했듯이 내 질문의 세부 사항을 분명히 읽지는 않았다! –

답변

2

특수 문자를 이스케이프하는 XML을 피하기 위해 사용할 수 있습니다.

a < b 

과 같이 :

<data>a < b</data> 

아무튼

하면

<data>...</data>

같은 요소가 그리고 데이터 요소에 다음 텍스트를 배치 할 상상 XML은 <을 인식하므로 작동하지 않습니다. 새 태그의 잠재적 시작

당신은 < 문자 탈출 할 수

<data>a &lt; b</data> 

을 또는 당신은 CDATA 섹션에 배치하여 데이터를 구문 분석하지 XML 파서를 알 수 있습니다 : 함께 다시 그런

<data><![CDATA[a < b]]></data> 

(CDATA, 텍스트에는 ]]>을 포함 할 수 없음)

this question

+0

괜찮습니까? 그렇다면 '글로벌 탈출 시퀀스'와 같을까요? ("/"를 문자열의 일부로 사용하는 것과 같이 " –

+0

@MrCoder usig \"는 <문자를 <으로 이스케이프하는 첫 번째 옵션과 같을 것입니다 .CDATA는 원시 문자열과 비슷합니다. XML 파서는 내용을 특정 방식으로 해석하지 않습니다. – nos

+0

괜찮 았기 때문에 거의 무시되었으므로 html로 전달되었습니다. 그것은 의견이나 무언가를 쓰거나 심지어는 완전히 무시하는 방법이기도합니다 - 그런 데이터를 전달하지 말고, 도움/인내에 대한 환호! :) –

0

<! [CDATA [...]]>`는 XML에서 텍스트를 인용하는 빠르고 쉬운 방법입니다.

XML에서 '<', '>', '&'은 특별한 의미가 있습니다. XML에 '<'또는 '>'을 포함 시키려면 '& lt;'으로 이스케이프 처리해야합니다. 및 '& gt;그러나 예를 들어 XML로 코드를 포함하는 경우 이러한 문자를 많이 사용할 수 있으며 "c > = '0'& & c < = '9' '"를 "& gt; =' 0 '& amp; & amp; c & lt; ='9 ' "입니다. 이러한 상황에서 텍스트를 이스케이프하기 위해보다 근본적인 방법이 도입되었습니다. '<! [CDATA ['및 ']] >'사이의 모든 내용은 축약 된 것으로 해석됩니다. 시퀀스 ']]>'만 축 어적 텍스트의 끝을 표시합니다.

CDATA의 사용은 XML의 독자에게는 보이지 않습니다. ''는 '테스트'와 동일한 내용을 나타냅니다.

큰 제한이 있습니다. CDATA에서는 인코딩의 문자 (헤더의 encoding = "...") 만 나타낼 수 있습니다. ISO-8859-1과 같은 인코딩을 사용하는 경우 € 또는 œ와 같은 문자를 나타낼 수 없습니다.

그래서 코드가 포함 된 XML을 입력하면 문제를 예방하기 위해 전체 코드를 CDATA에 포함시키는 것이 좋습니다. 따라서 XML에 의미있는 문자를 이스케이프 처리하는 것을 잊어 버릴 수 있습니다.

그러나 쉽게 CDATA를 사용하여 프로그래밍 방식으로 텍스트를 인용하는 것은 좋지 않습니다. 몇 가지 특수 문자를 잃어 버릴 수도 있고 언젠가는 데이터에 ']]>'시퀀스가있을 수도 있습니다. & lt를 사용하여 탈출하는 것이 더 좋습니다. & gt; & amp; 숫자 엔티티 코드.

관련 문제