国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

今天看到一個很好的類-操作xml的!貼出來給大家,不知道以前貼過_PHP

php中文網(wǎng)
發(fā)布: 2016-06-01 12:26:58
原創(chuàng)
1065人瀏覽過

/*
????(c) 2000 Hans Anderson Corporation.??All Rights Reserved.
????You are free to use and modify this class under the same
????guidelines found in the PHP License.

????-----------

????bugs/me:
????http://www.hansanderson.com/php/
????me@hansanderson.com
????showstv@163.com

????-----------

????Version 1.0

????????- 1.0 is the first actual release of the class.??It's??
??????????finally what I was hoping it would be, though there
??????????are likely to still be some bugs in it.??This is
??????????a much changed version, and if you have downloaded
??????????a previous version, this WON'T work with your existing
??????????scripts!??You'll need to make some SIMPLE changes.

????????- .92 fixed bug that didn't include tag attributes

??????????(to use attributes, add _attributes[array_index]
???????????to the end of the tag in question:
????????????$xml_html_head_body_img would become
????????????$xml_html_head_body_img_attributes[0],??
???????????for example)

???????????-- Thanks to Nick Winfield
??????????????for reporting this bug.

????????- .91 No Longer requires PHP4!

????????- .91 now all elements are array.??Using objects has
??????????been discontinued.
*/

class xml_container{

????function store($k,$v) {
????????$this->{$k}[] = $v;
????}
}


/* parses the information */
/*********************************
*????類定義開始
*
*********************************/
class xml{
????
????// initialize some variables
????var $current_tag=array();
????var $xml_parser;
????var $Version = 1.0;
????var $tagtracker = array();

????/* Here are the XML functions needed by expat */


????/* when expat hits an opening tag, it fires up this function */
????function startElement($parser, $name, $attrs){

????????array_push($this->current_tag, $name); // add tag to the cur. tag array
????????$curtag = implode("_",$this->current_tag); // piece together tag

????????/* this tracks what array index we are on for this tag */

????????if(isset($this->tagtracker["$curtag"])) {
????????????$this->tagtracker["$curtag"]++;
????????}
????????else{
????????????$this->tagtracker["$curtag"]=0;
????????}

????????/* if there are attributes for this tag, we set them here. */

????????if(count($attrs)>0) {
????????????$j = $this->tagtracker["$curtag"];
????????????if(!$j) $j = 0;

????????????if(!is_object($GLOBALS[$this->identifier]["$curtag"][$j])) {
????????????????$GLOBALS[$this->identifier]["$curtag"][$j] = new xml_container;
????????????}

????????????$GLOBALS[$this->identifier]["$curtag"][$j]->store("attributes",$attrs);
????????}
????
????}// end function startElement



????/* when expat hits a closing tag, it fires up this function */
????function endElement($parser, $name) {
????????$curtag = implode("_",$this->current_tag); // piece together tag
????????
????????// before we pop it off,
????????// so we can get the correct
????????// cdata

????????if(!$this->tagdata["$curtag"]) {
????????????$popped = array_pop($this->current_tag); // or else we screw up where we are
????????????return; // if we have no data for the tag
????????}
????????else{
????????????$TD = $this->tagdata["$curtag"];
????????????unset($this->tagdata["$curtag"]);
????????}

????????$popped = array_pop($this->current_tag);
????????// we want the tag name for
????????// the tag above this, it??
????????// allows us to group the
????????// tags together in a more
????????// intuitive way.

????????if(sizeof($this->current_tag) == 0) return; // if we aren't in a tag

????????$curtag = implode("_",$this->current_tag); // piece together tag
????????// this time for the arrays

????????$j = $this->tagtracker["$curtag"];
????????
????????if(!$j) $j = 0;

????????if(!is_object($GLOBALS[$this->identifier]["$curtag"][$j])) {
????????????$GLOBALS[$this->identifier]["$curtag"][$j] = new xml_container;
????????}

????????$GLOBALS[$this->identifier]["$curtag"][$j]->store($name,$TD);
????????#$this->tagdata["$curtag"]);
????????unset($TD);
????????return TRUE;
????} // end function endElement


????/* when expat finds some internal tag character data,
???????it fires up this function */

????function characterData($parser, $cdata) {
????????$curtag = implode("_",$this->current_tag); // piece together tag
????????$this->tagdata["$curtag"] .= $cdata;
????}


????function xml($data,$identifier='xml') {???

????????$this->identifier = $identifier;

????????// create parser object
????????$this->xml_parser = xml_parser_create();

????????// set up some options and handlers
????????xml_set_object($this->xml_parser,$this);
????????xml_parser_set_option($this->xml_parser,XML_OPTION_CASE_FOLDING,0);
????????xml_set_element_handler($this->xml_parser, "startElement", "endElement");
????????xml_set_character_data_handler($this->xml_parser, "characterData");

????????if (!xml_parse($this->xml_parser, $data, TRUE)) {
????????????sprintf("XML error: %s at line %d",
????????????xml_error_string(xml_get_error_code($this->xml_parser)),
????????????xml_get_current_line_number($this->xml_parser));
????????}

????????// we are done with the parser, so let's free it
????????xml_parser_free($this->xml_parser);

????}//end constructor: function xml()


}//thus, we end our class xml

?>




操作方法:

require('class.xml.php');
$file = "data.xml";
$data = implode("",file($file)) or die("could not open XML input file");
$obj = new xml($data,"xml");


print $xml["hans"][0]->num_results[0];
for($i=0;$i print $xml["hans"][$i]->tag[0] . " ";
}

To print url attributes (if they exist):

print $xml["hans"][0]->attributes[0]["size"];

PHP速學(xué)教程(入門到精通)
PHP速學(xué)教程(入門到精通)

PHP怎么學(xué)習(xí)?PHP怎么入門?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號