티스토리 뷰

나의 공부방

[XML] CDATA란 무엇인가?

망나니개발자 2021. 1. 20. 11:47
반응형

1. CDATA란 무엇인가?


[ XML 구조 ]

일반적으로 XML은 가장 위에 선언문(XML DeclDeclaration)이 존재하고 그 하위에 XML 문서의 요소들이 존재한다. 요소들은 시작 태그인 <요소명>으로 끝 태그인 시작하여 </요소명>으로 닫히게 되어있다.

다음과 같은 문서는 XML의 구조로 되어있는 XML 문서이다.

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
  <item>
    <name>제목</name>
    <description>문서의 제목은 웹 브라우저의 제목 표시줄에 표시된다.</description>
  </item>
</dictionary>

 

[ CDATA란? ]

그런데 만약에 위의 XML 문서에 내용이 추가되어 다음과 같이 수정되었다고 하자.

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
  <item>
    <name>제목</name>
    <description>문서의 제목은 웹 브라우저의 제목 표시줄에 표시된다.</description>
  </item>
  <item>
    <name>강조</name>
    <description>내용을 굵은 글씨로 강조하기 위해서는 <b>...</b> 태그를 사용해야 한다. <b> 대신 <strong>을 사용할 수 있다.</description>
  </item>
</dictionary>

우리는 위의 내용에서 <b> 또는 <strong> 태그가 XML의 구조를 위한 것이 아님을 알 수 있다. 하지만 XML을 파싱해주는 프로그램의 경우 관련 태그들 역시 XML의 요소로 인식하여 잘못된 파싱 결과를 불러 일으키게 된다.

 

실제로 XML 파서를 통해 해당 내용을 파싱해보려고 하면 다음과 같이 파싱이 되지 않는 것을 볼 수 있다.

 

이렇듯 XML에서 파싱할 대상으로 인식하지 하지 않도록 그 구역을 지정해주는 것이 CDATA이다. XML로 파싱을 원하지 않는 구간의 시작에 <![CDATA[ 를 붙여주고, 구간의 끝에 ]]>를 추가하면 해당 구역이 파싱되지 않도록 설정할 수 있다. 위의 내용을 올바르게 파싱되도록 수정하면 CDATA를 추가하면 다음과 같다.

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
  <item>
    <name>제목</name>
    <description>문서의 제목은 웹 브라우저의 제목 표시줄에 표시된다.</description>
  </item>
  <item>
    <name>강조</name>
    <description><![CDATA[내용을 굵은 글씨로 강조하기 위해서는 <b>...</b> 태그를 사용해야 한다. <b> 대신 <strong>을 사용할 수 있다.]]></description>
  </item>
</dictionary>

 

그리고 위의 수정된 내용을 다시 XML 파서로 파싱해보면 정상적으로 파싱되는 것을 볼 수 있다.

반응형
댓글
댓글쓰기 폼
반응형
공지사항
Total
3,266,498
Today
286
Yesterday
2,361
링크
TAG
more
«   2022/11   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함