<?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関数は、PHPのXMLParserクラスの重要な方法です。 XMLパーサーのデフォルト処理関数を設定するために使用されます。このハンドラーは、XMLドキュメントですべての非特異的なタイプのノードに遭遇したときに呼び出されます。デフォルトの処理関数は、ドキュメントでテキストノード、CDATAノード、コメントなどをキャプチャします。
関数は次のように定義されています。
bool xml_set_default_handler ( resource $parser, callable $handler )
$パーサー:XMLパーサーのリソースハンドル。
$ハンドラー:デフォルトのノードを処理するために使用されるコールバック関数。この関数は、イベントタイプと対応するテキストデータの2つのパラメーターを受信します。
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);
?>
パーサーの作成: XML_PARSER_CREATE()関数を使用してXMLパーサーを作成します。
処理関数を設定します: xml_set_default_handlerを介してパーサーのデフォルト処理関数としてdefault_handler関数を設定します。この関数は、パーサーが明示的に指定されていないタイプのノードに遭遇するたびに呼び出されます。
XMLデータの解析: XML_PARSE()を使用してXMLデータを解析します。 xmlで
出力処理結果: default_handler関数は、HTMLエンティティ形式でCDATAコンテンツを出力します。
上記のコードを実行した後、出力は次のとおりです。
CDATA コンテンツ: This is a <message> with some <text> that is not parsed
これは、XMLパーサーがCDATAノードの内容を正常にキャプチャし、カスタム処理機能に渡したことを示しています。 CDATA( <and>など)の特殊文字は、解析エラーを避けるためにHTMLエンティティに変換されることに注意してください。
XML_SET_DEFAULT_HANDLER関数を介して、開発者はCDATAノードを含むXMLドキュメントでさまざまなコンテンツを柔軟に処理できます。特にCDATAノードにXMLの解析を妨げる可能性のある特殊文字が含まれている場合、明示的に定義されていないすべてのノードが適切に処理されることを確認できます。この方法は、XML解析のためのより多くの制御およびカスタマイズ機能を提供し、XMLデータを処理するための最も実用的なツールの1つです。