首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP XML 入門:CDATA 區段語法與解析特性詳解

     編輯:PHP 綜合知識

說明 XML 中 CDATA 區段的語法、用途與解析行為,展示如何在 XML 包含特殊字元(如 &、<、>)時避免解析錯誤,並對比 PCDATA 差異。

CDATA 範例 XML

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<class>
  <student id="No<001" haha="美女">
    <name>小喬</name>
    <sex>女</sex>
    <age>23</age>
    <info>
      <![CDATA[
        內容部分&*&$#^@*(#))$#*%#
      ]]>
    </info>
  </student>
  <student>
    <name>周瑜</name>
    <sex>男</sex>
    <age>26</age>
  </student>
</class>

核心知識點

  1. 不被解析:CDATA 區段內容會被視為純文字,不會被 XML 解析器處理標籤、實體參考等。
  2. 適用場景:程式碼片段、JSON 字串、含大量特殊符號的文字、HTML 片段嵌入 XML。
  3. 語法規則:
    • 起始:<![CDATA[
    • 結束:]]>
    • 區段內不能出現 ]]> 序列(否則視為結束)。

PCDATA 對比

PCDATA (Parsed Character Data):預設的文字節點類型,解析器會處理實體參考(如 &lt; → <)、展開參數實體。在 DTD 中用 #PCDATA 宣告元素內容模型。

PHP 讀取 CDATA 內容

<?php
$xmldoc = new DOMDocument();
$xmldoc->load("class.xml");

$info = $xmldoc->getElementsByTagName("info")->item(0);
echo $info->nodeValue; // 直接輸出 CDATA 內的原始文字
?>

DOM 會自動處理 CDATA,nodeValue 直接回傳未解析的原始字串。

實務提醒

  • 屬性值不能使用 CDATA,屬性值需用實體參考轉義特殊字元。
  • 若需在 CDATA 中輸出 ]]>,請拆分為 ]]> + <![CDATA[ 兩段。
  • 輸出 XML 時,若內容含特殊字元,建議以 CDATA 包裹或自動轉義。

善用 CDATA 可簡化特殊字元處理,讓 XML 既保有結構化優勢,又能靈活攜帶任意格式資料。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved