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;
}
public function getNodeTag()
{
return $this->nodeTag;
}
public function setValues($values){
$this->values = $values;
}