文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>PHP操作XML整理

PHP操作XML整理

时间:2009-05-22  来源:hkebao

1.PHP查询MYSQL中的记录并生成相应的XML接口文件
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><style> </style>

<?php

$hostname      = "localhost";

$usr        = "root";

$pw               = "321";

$dbname        = "db";

$id                 = $_GET["id"];

echo "<?xml version='1.0' encoding='gbk' ?>";

if(!is_numeric($id)){

       echo "<error><![CDATA[传入参数有问题。 ]]></error>";

       exit;

}

$sql        = "select * from host where id=".$id;

$link              = mysql_connect($hostname,$usr,$pw);

if(!$link){

       echo "<error><![CDATA[数据库连接异常!请检查数据库连接 ]]></error>";

       exit;

}else{

       mysql_query("set names gb2312");

       mysql_select_db($dbname,$link);

       $result = mysql_query($sql,$link);

       if(mysql_num_rows($result) == 0) {

              echo "<error><![CDATA[数据库没有信息]]></error>";

              die();

       } else {

              $str = "";

              while($row  = mysql_fetch_array($result)) {

                            $id          = Trim($row["id"]);

                            $host      = Trim($row["host"]);

                            $str  = $str."<row>";

                            $str  = $str."<id>"."<![CDATA[".$id."]]></id>";

                            $str  = $str."<host>"."<![CDATA[".$host."]]></host>";

                            $str  = $str."</row>";

                 }

                 echo $str;

       }

}

mysql_free_result($result);

mysql_close($link);

?>

2.PHP读取XML数据文件并解析出来项中的数据
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><style> </style>

<?php

  $doc = new DOMDocument();

  $doc->load( 'http://192.168.100.40:806/MyPhp/MyDB.php?id=2' ); 请求的URL包含XML

  $books = $doc->getElementsByTagName( "row" );

  foreach( $books as $book )  {            //遍历全部的数组数据

         $authors = $book->getElementsByTagName( "id" );

         $author = $authors->item(0)->nodeValue; 

         $publishers = $book->getElementsByTagName( "host" );

         $publisher = $publishers->item(0)->nodeValue; 

         echo "$publisher - $author \n";

  }

附:另一种方法解析 不过没有成功 先贴代码

<?php
    /****************************************
    *采用parse方法进行解析调用PHP内置的函数
    *整理总结
    parser是php内置的一个用来处理xml的解析器,它的工作由三个事件组成:
    起始标签、 读取数据、结束标签。
    也就是说在对xml进行处理的时候每当遇到起始标签、
    数据和结束标签的时候函数会做相应的动作来完成对xml数据的转换。
    ******************************************/
?>
<?php
    //开始定义好解析函数
    $name        = false;
    $position    = false;
    function startElemnt($parser_instance,$element_name,$attrs) {
        //处理起始标签事件函数
        global $name,$position;
        if($element_name == "name") {  //表示标签如果是NAME则如下处理
            $name        = true;
            $position    = false;
            echo "名字";
        }
        if($element_name == "position") {
            $name        = false;
            $position    = true;
            echo "位置";
        }
    }
    function characterData($parser_instance,$xml_data) {
        //读取数据时的函数
        global $name,$position;
        if($position)
            //因为之前调用过了标签开始处理函数会处理全局的变量值的
            echo $xml_data."<br>";
        if($name)
            echo $xml_data."<br>";
    }
    function endElement($parser_instance,$element_name){
        global $name,$position;
        $name        = false;
        $position    = false;
    }

    $parser        = xml_parser_create();  //创建一个parser解析器
    xml_set_element_handler($parser,"startElement","endElement");//设立标签触发函数
    //我的理解:<error>2</error> 程序遇到了error的时候就触发startElement函数
    xml_set_character_data_handler($parser,"characterData");
    //我的理解:<error>2</error> 程序遇到了里面的2时如何进行读取操作
    $xml_file    = "1.xml";
    $filehandler= fopen($xml_file,"r"); //打开XML文件
    while($data = fread($filehandler,9999)){
        try{
            if(!xml_parse($parser,$data,feof($filehandler))){
                die(sprintf("xml error:%s at line %d",xml_error_string(xml_get_error_code($parser)),xml_get_current_line_number($parser)));
            }
        }catch(Exception $e){
            echo "异常信息:".$e->getMessage();
        }
    }
    //我的理解:开始解析此XML文档 每次取4096个字节处理
    fclose($filehandler);
    xml_parser_free($parser); //关闭解析器
    ?>


提示 有问题出现的。打不到事件处理函数 !郁闷呀


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载