-
-
/**XMLファイル解析教室 - * 作成日: 2013-02-01
- * 作成者: fdipzone
- * Ver: 1.0
- * エディション bbs.it-home.org
- * func:
- * loadXmlFile($xmlfile) xmlファイルを読み込み配列を出力
- * loadXmlString($xmlstring) は xmlstring を読み取り、配列を出力します
- */
-
- class XMLParser{
- /**XML ファイルを読み取る
- * @param String $xmlfile
- * @return Array
- */
- public function loadXmlFile($xmlfile){
- // get xmlfile の内容
- $xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : '';
-
- // パーサー xml
- list($flag, $data) = $this->parser($xmlstring);
- return $this->response($flag, $data);
- }
-
-
- /* *读取xmlstring
- * @param String $xmlstring
- * @return Array
- */
- public function loadXmlString($xmlstring){
- // パーサー XML
- list($flag, $data) = $this->parser($xmlstring);
-
- return $this->response($flag, $data);
- }
-
- /**XML コンテンツを解釈します
- * @param String $xmlstring
- * @return Array
- */
- プライベート関数パーサー($xmlstring){
- $flag = false;
- $data = array();
-
- // XML 形式をチェック
- if($this->checkXmlFormat($xmlstring)){
- $flag = true;
-
- // xml からオブジェクト
- $data = simpleXML_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA);
-
- // オブジェクトを配列に変換
- $this->objectToArray($data);
- }
- return array($flag, $data);
- }
-
- /**XML形式が正しいか確認してください
- * @param String $xmlstring
- * @return boolean
- */
- プライベート関数 checkXmlFormat($xmlstring){
- if($xmlstring==''){
- return false; $xml_parser_obj = xml_parser_create();
-
- if(xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs)===1){ // 1:成功 0:失敗
- return true;
- }else{
- false を返します。
- }
- }
/**object 转 配列
- * @param object $object
- * @return 配列
- */
- プライベート関数 objectToArray(&$object){
- $object = (array)$object;
- foreach($object as $key => $value){
- if($value== ''){
- $object[$key] = "";
- }else{
- if(is_object($value) || is_array($value)){
- $this->objectToArray($value);
- $object[$key] = $value;
- }
- }
- }
- }
/**出力は戻り値
- * @param boolean $flag true:false
- * @param Array $data 変換されたデータ
- * @return Array
- */
- プライベート関数response($flag=false, $data=array()){
- return array($flag, $data);
- }
- }
- ?>
-
-
-
- 复制番号
2、演示例
require "XMLParser.class.php"; $xmlfile = 'file.xml'; $xmlstring = ' 1000ステータス>
<結果>100
fdipzone
1性別>
28年齢>
結果>
';
echo ''; </li>
<li> </li>
<li>$xml_parser = 新しい XMLParser(); </li>
<li>echo "応答 xmlfilern"; </li>
<li>list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile); </li>
<li>if($flag){ </li>
<li> print_r($xmldata); </li>
<li>} </li>
<li> </li>
<li>echo "応答 xmlstringrn"; </li>
<li>list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring); </li>
<li>if($flag){ </li>
<li> print_r($xmldata); </li>
<li>} </li>
<li> </li>
<li>echo ' ';
?>
复制代
附、PHP XML预定义常量: http://bbs.it-home.org/shouce/php5/libxml.constants.html
|