次の例では、XML ドキュメント内のタグを HTML タグに直接マッピングします。 「マップされた配列」に存在しない要素は無視されます。もちろん、この例は特定の XML ドキュメントに対してのみ機能します。
$file = "data.xml";
$map_array = array(
"BOLD" => "B",
" EMPHASIS" => "I",
"LITERAL" => "TT"
);
function startElement($parser, $name, $attrs) {
global $map_array;
if ($htmltag == $map_array[$name]) {
print "<$htmltag>";
}
}
function endElement($parser , $ name) {
global $map_array;
if ($htmltag == $map_array[$name]) {
print "$htmltag>";
}
}
functioncharacterData($parser, $data) {
print $data;
}
$xml_parser = xml_parser_create();
// ケースの折りたたみを使用して、これらの要素名は要素配列内で見つけることができます
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData" );
if (!($fp = fopen($file, "r"))) {
die("XML 入力を開けませんでした");
}
while ( $data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML エラー: %s 行目 %) d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?> ;