页:
[1]
|
求助.如何用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;
?>
请高手帮忙 |
Powered by Discuz! Archiver 6.1.0
© 2001-2006 Comsenz Inc.
Processed in 0.006177 second(s), 2 queries |