ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PHP] XML CDATA 란 무엇인가?
    오늘의 IT/PHP 2023. 1. 27. 23:59
    반응형

     

    CDATA : 'Character Data'. 즉, '문자 데이터'를 뜻함

    더 정확하게 말하면 '(Unparsed) Character Data'. 즉, '파싱 하지 않는 문자 데이터'라는 뜻임.

    반대로, 파싱하는 문자 데이터는 'PCDATA'임

    XML에서 파싱할 대상으로 인식하지 하지 않도록 그 구역을 지정해 주는 것이 CDATA임

    XML로 파싱을 원하지 않는 구간의 시작에 <![CDATA[ 를 붙여주고, 구간의 끝에 ]]>를 추가하면 해당 구역이 파싱 되지 않도록 설정할 수 있음

     

    예시

    <?xml version="1.0" encoding="UTF-8"?>
    <dictionary>
      <term>
        <name>HI TODAY</name>
        <description>오늘의 대장 <b>...</b> 안녕 &&<하세요>. <b> 공부 <strong>해야돼....?</description>
      </term>
    </dictionary>

     

    결과

    HI TODAY
     
    오늘의 대장 ...

     

    <b> 또는 <strong> 태그, '<', '>', '&' 같은 특수문자들은 XML의 구조를 위한 것이 아님여서 안 읽히거나 오류남

     

    CDATA 사용 예시

    <?xml version="1.0" encoding="UTF-8"?>
    <dictionary>
      <term>
        <name>HI TODAY</name>
        <description>오늘의 대장 <![CDATA[<b>...</b> 안녕 &&<하세요>. <b> 공부 <strong>해야돼....?]]></description>
      </term>
    </dictionary>

     

    결과


    HI TODAY

    오늘의 대장 <b>...</b> 안녕 &&<하세요>. <b> 공부 <strong>해야돼....? 

     

    PHP에서 사용할 때 버전 5 이후 일 경우

    $ar_data['title'] = "<![CDATA[".$data['str']."]]>";

     

    버전 4 이전 일 경우

    $ar_data['title'] = array_pop(explode('<![CDATA[',reset(explode(']]>',$date['str']))));

     

    이런 식으로 데이터 넣어서 넣어서 XML 파일 만듦

    반응형
Designed by Tistory.