Php/docs/example.xml-map-tags

提供:Dev Guides
< Php
移動先:案内検索

XMLタグのマッピングの例

例1 XMLをHTMLにマップする

この例は、XMLドキュメントのタグを直接HTMLタグにマップします。 "map array" にないエレメントは無視されます。もちろん、この例は、 特定の XML ドキュメント型を有する場合のみ動作します。


<?php$file = "data.xml";$map_array = array(    "BOLD"     => "B",    "EMPHASIS" => "I",    "LITERAL"  => "TT");function startElement($parser, $name, $attrs) {    global $map_array;    if (isset($map_array[$name])) {        echo "<$map_array[$name]>";    }}function endElement($parser, $name) {    global $map_array;    if (isset($map_array[$name])) {        echo "</$map_array[$name]>";    }}function characterData($parser, $data) {    echo $data;}$xml_parser = xml_parser_create();// case-folding を用いることで、$map_array から確実にタグを見つけられるようにします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);?>