喜悦国际村 » XML/HTML/CSS/Js » 求助.如何用php解析如下的xml

页: [1]
yhq2582005-5-3 06:33 AM
求助.如何用php解析如下的xml

<webmethod id="123456">
        <cpcode value="1234"/>
        <userid value="12345678"/>
        <encryptflag value="y"/>
        <ispack value="Y"/>
        <sub_type value="day"/>
        <orderdate value="2003-01-01 23:59:01" />
</webmethod>

如果xml语言是

<webmethod id="123456">
        <cpcode >1234</cpcode>
        <userid >12345678</userid>
</webmethod>
就能解析.
下面是class文件
<?
class xml  {
        var $webmethod;
        var $cpcode;
        var $userid;
        var $encryptflag;
        var $ispack;
        var $sub_type;
        var $orderdate;
        var $disorderdate;
        var $parser;
            var $tag;
            var $attributes;

    function xml()
    {
           
        $this->webmethod=0;
        $this->cpcode="";
        $this->userid="";
        $this->encryptflag="";
        $this->ispack="";
        $this->sub_type="";
        $this->orderdate="";
        $this->disorderdate="";

                $this->parser = xml_parser_create();

                xml_set_object($this->parser, &$this);
                xml_set_element_handler($this->parser, "tag_open", "tag_close");
                xml_set_character_data_handler($this->parser, "cdata");
    }

    function parse($data)
    {
                xml_parse($this->parser, $data);
    }

    function tag_open($parser, $temp_tag, $attributes)
    {
           
                $this->tag = $temp_tag;
                $this->attributes=$attributes;
    }
    function tag_close($parser, $temp_tag)
    {
                $this->tag = NULL;
    }
    function cdata($parser, $cdata)
    {
                if(strcmp($this->tag, "CPCODE") == 0) {
                        $this->cpcode = $cdata;
                        echo "cpcode:".$this->cpcode."<br>";                               
                }
                if(strcmp($this->tag, "USERID") == 0) {
                        $this->userid = $cdata;
                        echo "userid:".$this->userid."<br>";                               
                }
                if(strcmp($this->tag, "ENCRYPTFLAG") == 0) {
                        $this->encryptflag = $cdata;
                        echo "encryptflag:".$this->encryptflag."<br>";
                       
                }
                if(strcmp($this->tag, "ISPACK") == 0) {
                       
                        $this->ispack = $cdata;
                        echo "ispack:".$this->ispack."<br>";
                       
                }
                if(strcmp($this->tag, "SUB_TYPE") == 0) {
                        $this->sub_type = $cdata;
                        echo "sub_type:".$this->sub_type."<br><br>";
                                       
                }
                if(strcmp($this->tag, "ORDERDATE") == 0) {
                        $this->orderdate = $cdata;
                        echo "orderdate:".$this->orderdate."<br>";               
                }
                if(strcmp($this->tag, "DISORDERDATE") == 0) {       
                        $this->disorderdate = $cdata;
                        echo "disorderdate:".$this->disorderdate."<br>";               
                }               
    }
}
?>

运行文件是
<?
        $file="data2.xml";
        if (!($fp = fopen($file, "r"))) {
                    die("could not open XML input");
        }
        $xmlstr = fread($fp, 4096);

       

       
        $xml_parser = new xml();
        $xml_parser->parse($xmlstr);
       
        $cpcode=$xml_parser->cpcode;
       
        $userid=$xml_parser->userid;
        $encryptflag=$xml_parser->encryptflag;
        $ispack=$xml_parser->ispack;
        $sub_type=$xml_parser->sub_type;
        $orderdate=$xml_parser->orderdate;
        $disorderdate=$xml_parser->disorderdate;
        echo "encryptflag:".$encryptflag;
        echo "cpcode:".$cpcode;
?>

请高手帮忙


查看完整版本: 求助.如何用php解析如下的xml


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.006177 second(s), 2 queries