作者:So橼酆_292 | 来源:互联网 | 2018-03-24 21:36
?php**nbs...
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);
}
}
?>
永久链接:
转载随意!带上文章地址吧。