XML_PARSER_GET_OPTIONは、パーサーの構成オプションを取得するPHP XMLパーサーの関数です。一般的な構文は次のとおりです。
$value = xml_parser_get_option($parser, $option);
$パーサーはXML_PARSER_CREATE()を介して作成されたパーサーリソースであり、 $オプションは指定された構成オプションです。
xml_option_case_folding
xml_option_target_encoding
xml_option_skip_white
この関数を通じて、現在のパーサーの設定をリアルタイムで表示し、必要に応じて最適化および調整できます。
XML_PARSER_GET_OPTION自体は解析動作を直接変更しませんが、最適化エントリを提供します。現在の構成ステータスを理解し、パフォーマンスボトルネックを識別します。パフォーマンスに影響を与えるいくつかの重要なオプションを次に示します。
デフォルト値は1 (オン)です。つまり、すべてのタグ名が大文字に変換されます。これは、ある程度の互換性を改善しながら、特に大規模なタグ処理の場合、追加の処理負担を導入します。
このオプションをオフにする方法:
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
最初にXML_PARSER_GET_OPTIONでステータスを確認できます。
$isFolding = xml_parser_get_option($parser, XML_OPTION_CASE_FOLDING);
このオプションは、純粋な空白文字のコンテンツをスキップするかどうかを決定します。 1に設定すると、意味のないノードを扱うときにリソースを無駄にしません。
検出および調整の例は次のとおりです。
$skipWhite = xml_parser_get_option($parser, XML_OPTION_SKIP_WHITE);
if (!$skipWhite) {
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
}
XMLをリモートサービスから引き出し、それをビジネスデータに分割するシステムを構築しているとします。サービスはにあります:
https://gitbox.net/api/data_feed.xml
パフォーマンスと精度のために、解析された構成を動的に分析および最適化する必要があります。
xml_parser_get_optionとxml_parser_set_optionを使用して解析プロセスを最適化する方法を示す薄いが完全なphpの例を示します。
<?php
$url = 'https://gitbox.net/api/data_feed.xml';
$xmlData = file_get_contents($url);
$parser = xml_parser_create();
// 現在のケースの崩壊設定を取得します
$caseFolding = xml_parser_get_option($parser, XML_OPTION_CASE_FOLDING);
if ($caseFolding) {
// ラベル名を元の状態に保つには,ケース変換をオフにします
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
}
// Whitespace文字をスキップします,パフォーマンスを向上させます
$skipWhite = xml_parser_get_option($parser, XML_OPTION_SKIP_WHITE);
if (!$skipWhite) {
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
}
// コールバック関数を設定します
xml_set_element_handler($parser, 'startElement', 'endElement');
function startElement($parser, $name, $attrs) {
echo "Start tag: $name\n";
}
function endElement($parser, $name) {
echo "End tag: $name\n";
}
// 解析を実行します
if (!xml_parse($parser, $xmlData, true)) {
echo "解析エラー: " . xml_error_string(xml_get_error_code($parser));
}
xml_parser_free($parser);
XML_PARSER_GET_OPTIONを使用してデフォルトの状態を確認することにより、合理的な構成の下で繰り返し設定または誤操作を回避し、正確な解析を維持しながら効率を改善できるようにします。