現在の位置: ホーム> 最新記事一覧> XML_SET_DEFAULT_HANDLER関数は、XMLドキュメントのCDATAノードをどのように処理しますか?

XML_SET_DEFAULT_HANDLER関数は、XMLドキュメントのCDATAノードをどのように処理しますか?

M66 2025-06-22
<?php
/**
 * 記事タイトル: xml_set_default_handler 機能を処理する方法 XML ドキュメントで CDATA ノード?
 */

?>
<hr>

### xml_set_default_handler 機能を処理する方法 XML ドキュメントで CDATA ノード?

存在する PHP 真ん中,`xml_set_default_handler` 機能は非常に便利なツールです,開発者ができます XML 分析过程真ん中遇到の默认事件设置处理程序。特に,それに対処する方法が含まれます XML ドキュメントで CDATA ノード。この記事では、それを使用する方法を詳細に紹介します `xml_set_default_handler` 処理する関数 CDATA ノード。

#### 何ですか CDATA ノード?

存在する XML 文档真ん中,CDATA(Character Data)ノード是一种特殊の文本ノード,分析する必要のない文字データを含めることができます。CDATA エリアのスタートマークはです `<![CDATA[`,そして、エンドマークはです `]]>`。存在する这个区域内,すべての文字,ようなものを含む `<` そして `&` そのような特殊文字,そのまま処理されます,とは見なされていません XML 要素分析。

例えば,以下は含まれています CDATA の XML 例:

```xml
<note>
    <to>Tove</to>
    <from>Jani</from>
    <message><![CDATA[This is a <message> with some <text> that is not parsed]]></message>
</note>

この例では、タグ内のコンテンツいくつかそれは解析されません]]]>は通常のテキストとして処理されます。

XML_SET_DEFAULT_HANDLER関数の紹介

XML_SET_DEFAULT_HANDLER関数は、PHPのXMLParserクラスの重要な方法です。 XMLパーサーのデフォルト処理関数を設定するために使用されます。このハンドラーは、XMLドキュメントですべての非特異的なタイプのノードに遭遇したときに呼び出されます。デフォルトの処理関数は、ドキュメントでテキストノード、CDATAノード、コメントなどをキャプチャします。

関数は次のように定義されています。

 bool xml_set_default_handler ( resource $parser, callable $handler )
  • $パーサー:XMLパーサーのリソースハンドル。

  • $ハンドラー:デフォルトのノードを処理するために使用されるコールバック関数。この関数は、イベントタイプと対応するテキストデータの2つのパラメーターを受信します。

XML_SET_DEFAULT_HANDLERを介してCDATAノードを処理する方法は?

XMLパーサーがCDATAノードに遭遇すると、デフォルトの動作はCDATA含有量をプレーンテキストとして扱うことです。ただし、これらのコンテンツをより詳細に処理するために、 XML_SET_DEFAULT_HANDLERを介してパーサー用のカスタムデフォルトハンドラーを設定できます。

xml_set_default_handlerを使用してxmlのCDATAノードを処理する方法を示す簡単な例を次に示します。

 <?php
$xml_data = <<<XML
<note>
    <to>Tove</to>
    <from>Jani</from>
    <message><![CDATA[This is a <message> with some <text> that is not parsed]]></message>
</note>
XML;

function default_handler($parser, $data) {
    // 输出处理のCDATAコンテンツ
    echo "CDATA コンテンツ: " . htmlspecialchars($data) . "\n";
}

// 作成する XML パーサー
$parser = xml_parser_create();

// デフォルトの処理機能を設定します
xml_set_default_handler($parser, 'default_handler');

// 分析 XML データ
xml_parse($parser, $xml_data);

// 释放パーサー
xml_parser_free($parser);
?>

分析プロセス分析

  1. パーサーの作成XML_PARSER_CREATE()関数を使用してXMLパーサーを作成します。

  2. 処理関数を設定しますxml_set_default_handlerを介してパーサーのデフォルト処理関数としてdefault_handler関数を設定します。この関数は、パーサーが明示的に指定されていないタイプのノードに遭遇するたびに呼び出されます。

  3. XMLデータの解析XML_PARSE()を使用してXMLデータを解析します。 xmlでタグにはCDATAノードが含まれ、パーサーはノードの内容をdefault_handler関数に渡します。

  4. 出力処理結果default_handler関数は、HTMLエンティティ形式でCDATAコンテンツを出力します。

結果出力

上記のコードを実行した後、出力は次のとおりです。

 CDATA コンテンツ: This is a &lt;message&gt; with some &lt;text&gt; that is not parsed

これは、XMLパーサーがCDATAノードの内容を正常にキャプチャし、カスタム処理機能に渡したことを示しています。 CDATA( <and>などの特殊文字は、解析エラーを避けるためにHTMLエンティティに変換されることに注意してください。

要約します

XML_SET_DEFAULT_HANDLER関数を介して、開発者はCDATAノードを含むXMLドキュメントでさまざまなコンテンツを柔軟に処理できます。特にCDATAノードにXMLの解析を妨げる可能性のある特殊文字が含まれている場合、明示的に定義されていないすべてのノードが適切に処理されることを確認できます。この方法は、XML解析のためのより多くの制御およびカスタマイズ機能を提供し、XMLデータを処理するための最も実用的なツールの1つです。