XMLParser.class.phpクラスファイルは以下の通りです:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
/**XMLファイル解析クラス * 日付: 2013-02-01 * 著者: fdipzone * バージョン: 1.0 * * 機能: * loadXmlFile($xmlfile) XMLファイルを読み込み、配列を出力します * loadXmlString($xmlstring) は xmlstring を読み取り、配列を出力します */
クラス XMLParser{
/**XMLファイルを読む * @param String $xmlfile * @return 配列 */ パブリック関数loadXmlFile($xmlfile){ // xmlfile コンテンツを取得します $xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : ''; // パーサー XMLlist($flag, $data) = $this->parser($xmlstring); $this->response($flag, $data) を返す }
/**读取xmlstring * @param String $xmlstring * @return 配列 */ パブリック関数loadXmlString($xmlstring){ // パーサー XML list($flag, $data) = $this->parser($xmlstring); $this->response($flag, $data) を返す}
/**XMLコンテンツを説明する * @param 文字列 $xmlstring * @return 配列 */ プライベート関数パーサー($xmlstring){ $flag = false $data = 配列(); // XML 形式をチェックする if($this->checkXmlFormat($xmlstring)){ $flag = true; // xml からオブジェクトへ $data = simpleXML_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA); // オブジェクトを配列に変換する $this->objectToArray($data); } 配列を返す($flag, $data); }
/**XML形式が正しいか確認してください * @param 文字列 $xmlstring * @return ブール値 */ プライベート関数 checkXmlFormat($xmlstring){ if($xmlstring==''){ false を返します。 } $xml_parser_obj = xml_parser_create();
if(xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs)===1){// 1: 成功 0: 失敗 true を返します。 }その他{ false を返します。 } }
/**オブジェクト转配列 * @param オブジェクト $object * @return 配列 */ プライベート関数 objectToArray(&$object){
$object = (配列)$object;
foreach($object as $key => $value){ if($value==''){ $object[$key] = ""; }その他{ if(is_object($value) || is_array($value)){ $this->objectToArray($value); $object[$key] = $value; } } } }
/**出力が返されます * @param boolean $flag true:false * @param Array $data 変換されたデータ * @return 配列 */ プライベート関数の応答($flag=false, $data=array()){ 配列を返す($flag, $data); } } ?> |
デモサンプルプログラムは以下の通りです:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
「XMLParser.class.php」が必要です
$xmlfile = 'file.xml'; $xmlstring = '1000ステータス> <情報>情報> <結果>28年齢> 結果> '; エコー ''; <p>$xml_parser = 新しい XMLParser(); </p>「応答xmlfilrn」をエコーします <p> </p>list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile); <p>if($flag){ </p> <p> print_r($xmldata); </p>} <p> </p>エコー "応答 xmlstringrn"; <p>list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring); </p>if($flag){ <p> </p> print_r($xmldata); <p>} </p> <p>エコー ''; ?>
http://www.bkjia.com/PHPjc/882704.htmlwww.bkjia.com | true