使用PHP 5.0 轻松解析XML文档(2)

搽峩

搽峩

2016-01-29 13:01

使用PHP 5.0 轻松解析XML文档(2),使用PHP 5.0 轻松解析XML文档(2)

文件:SimpleDocumentParser.php

<?php/** *========================================================= * * @author     hahawen(大龄青年)   * @since      2004-12-04 * @copyright  Copyright (c) 2004, NxCoder Group * *========================================================= *//** * class SimpleDocumentParser * use SAX parse xml file, and build SimpleDocumentObject * all this pachage's is work for xml file, and method is action as DOM. * * @package SmartWeb.common.xml * @version 1.0 */class SimpleDocumentParser{ private $domRootObject = null; private $currentNO = null; private $currentName = null; private $currentValue = null; private $currentAttribute = null; public function getSimpleDocument() {     return $this->domRootObject; } public function parse($file) {        $xmlParser = xml_parser_create();     xml_parser_set_option($xmlParser,XML_OPTION_CASE_FOLDING, 0);     xml_parser_set_option($xmlParser,XML_OPTION_SKIP_WHITE, 1);     xml_parser_set_option($xmlParser, XML_OPTION_TARGET_ENCODING, 'UTF-8');     xml_set_object($xmlParser, $this);     xml_set_element_handler($xmlParser, "startElement", "endElement");     xml_set_character_data_handler($xmlParser, "characterData");        if (!xml_parse($xmlParser, file_get_contents($file)))            die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xmlParser)),
        xml_get_current_line_number($xmlParser))); xml_parser_free($xmlParser); } private function startElement($parser, $name, $attrs) { $this->currentName = $name; $this->currentAttribute = $attrs; if($this->currentNO == null) { $this->domRootObject = new SimpleDocumentRoot($name); $this->currentNO = $this->domRootObject; } else { $this->currentNO = $this->currentNO->createNode($name, $attrs); } } private function endElement($parser, $name) { if($this->currentName==$name) { $tag = $this->currentNO->getSeq(); $this->currentNO = $this->currentNO->getPNodeObject(); if($this->currentAttribute!=null && sizeof($this->currentAttribute)>0) $this->currentNO->setValue($name, array('value'=>$this->currentValue,
       'attrs'=>$this->currentAttribute)); else $this->currentNO->setValue($name, $this->currentValue); $this->currentNO->removeNode($tag); } else { $this->currentNO = (is_a($this->currentNO, 'SimpleDocumentRoot'))? null:
        $this->currentNO->getPNodeObject(); } } private function characterData($parser, $data) { $this->currentValue = iconv('UTF-8', 'GB2312', $data); } function __destruct() { unset($this->domRootObject); }}?>

  文件:SimpleDocumentBase.php

<?php/** *========================================================= * * @author     hahawen(大龄青年)   * @since      2004-12-04 * @copyright  Copyright (c) 2004, NxCoder Group * *========================================================= *//** * abstract class SimpleDocumentBase * base class for xml file parse * all this pachage's is work for xml file, and method is action as DOM. * * 1 add/update/remove data of xml file. * 2 explode data to array. * 3 rebuild xml file * * @package SmartWeb.common.xml * @abstract * @version 1.0 */abstract class SimpleDocumentBase{ private $nodeTag = null; private $attributes = array(); private $values = array(); private $nodes = array();    function __construct($nodeTag)    {        $this->nodeTag = $nodeTag;    }    pub      
展开更多 50%)
分享

猜你喜欢

使用PHP 5.0 轻松解析XML文档(2)

PHP
使用PHP 5.0 轻松解析XML文档(2)

使用PHP 5.0 轻松解析XML文档

PHP
使用PHP 5.0 轻松解析XML文档

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

使用PHP 5.0 轻松解析XML文档(5)

PHP
使用PHP 5.0 轻松解析XML文档(5)

使用PHP 5.0 轻松解析XML文档(6)

PHP
使用PHP 5.0 轻松解析XML文档(6)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

使用PHP 5.0 轻松解析XML文档(3)

PHP
使用PHP 5.0 轻松解析XML文档(3)

使用PHP 5.0 轻松解析XML文档(4)

PHP
使用PHP 5.0 轻松解析XML文档(4)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

XML指南——XML编码

XML指南——XML编码

《初音未来 歌姬计划F2》极限谱面解析第七课

《初音未来 歌姬计划F2》极限谱面解析第七课
下拉加载更多内容 ↓