📄 domxml-php4-php5.php
字号:
function __get($name) { switch ($name) { case 'type': return $this->myDOMNode->nodeType; case 'tagname': return ($this->myDOMNode->nodeType===XML_ELEMENT_NODE) ? $this->myDOMNode->localName : $this->myDOMNode->tagName; //Avoid namespace prefix for DOMElement case 'content': return $this->myDOMNode->textContent; case 'value': return $this->myDOMNode->value; default: $myErrors=debug_backtrace(); trigger_error('Undefined property: '.get_class($this).'::$'.$name.' ['.$myErrors[0]['file'].':'.$myErrors[0]['line'].']',E_USER_NOTICE); return false; } } function add_child($newnode) {return append_child($newnode);} function add_namespace($uri,$prefix) {return false;} function append_child($newnode) {return self::_newDOMElement($this->myDOMNode->appendChild($this->_importNode($newnode)),$this->myOwnerDocument);} function append_sibling($newnode) {return self::_newDOMElement($this->myDOMNode->parentNode->appendChild($this->_importNode($newnode)),$this->myOwnerDocument);} function attributes() { $myDOMNodeList=$this->myDOMNode->attributes; if (!(isset($myDOMNodeList)&&$this->myDOMNode->hasAttributes())) return null; $nodeSet=array(); $i=0; while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=new php4DOMAttr($node,$this->myOwnerDocument); return $nodeSet; } function child_nodes() { $myDOMNodeList=$this->myDOMNode->childNodes; $nodeSet=array(); $i=0; if (isset($myDOMNodeList)) while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=self::_newDOMElement($node,$this->myOwnerDocument); return $nodeSet; } function children() {return $this->child_nodes();} function clone_node($deep=false) {return self::_newDOMElement($this->myDOMNode->cloneNode($deep),$this->myOwnerDocument);} //dump_node($node) should only be called on php4DOMDocument function dump_node($node=null) {return $node==null ? $this->myOwnerDocument->myDOMNode->saveXML($this->myDOMNode) : $this->myOwnerDocument->myDOMNode->saveXML($node->myDOMNode);} function first_child() {return self::_newDOMElement($this->myDOMNode->firstChild,$this->myOwnerDocument);} function get_content() {return $this->myDOMNode->textContent;} function has_attributes() {return $this->myDOMNode->hasAttributes();} function has_child_nodes() {return $this->myDOMNode->hasChildNodes();} function insert_before($newnode,$refnode) {return self::_newDOMElement($this->myDOMNode->insertBefore($this->_importNode($newnode),$refnode==null?null:$refnode->myDOMNode),$this->myOwnerDocument);} function is_blank_node() {return ($this->myDOMNode->nodeType===XML_TEXT_NODE)&&preg_match('%^\s*$%',$this->myDOMNode->nodeValue);} function last_child() {return self::_newDOMElement($this->myDOMNode->lastChild,$this->myOwnerDocument);} function new_child($name,$content) { $mySubNode=$this->myDOMNode->ownerDocument->createElement($name); $mySubNode->appendChild($this->myDOMNode->ownerDocument->createTextNode(_entityDecode($content))); $this->myDOMNode->appendChild($mySubNode); return new php4DOMElement($mySubNode,$this->myOwnerDocument); } function next_sibling() {return self::_newDOMElement($this->myDOMNode->nextSibling,$this->myOwnerDocument);} function node_name() {return ($this->myDOMNode->nodeType===XML_ELEMENT_NODE) ? $this->myDOMNode->localName : $this->myDOMNode->nodeName;} //Avoid namespace prefix for DOMElement function node_type() {return $this->myDOMNode->nodeType;} function node_value() {return $this->myDOMNode->nodeValue;} function owner_document() {return $this->myOwnerDocument;} function parent_node() {return self::_newDOMElement($this->myDOMNode->parentNode,$this->myOwnerDocument);} function prefix() {return $this->myDOMNode->prefix;} function previous_sibling() {return self::_newDOMElement($this->myDOMNode->previousSibling,$this->myOwnerDocument);} function remove_child($oldchild) {return self::_newDOMElement($this->myDOMNode->removeChild($oldchild->myDOMNode),$this->myOwnerDocument);} function replace_child($newnode,$oldnode) {return self::_newDOMElement($this->myDOMNode->replaceChild($this->_importNode($newnode),$oldnode->myDOMNode),$this->myOwnerDocument);} function replace_node($newnode) {return self::_newDOMElement($this->myDOMNode->parentNode->replaceChild($this->_importNode($newnode),$this->myDOMNode),$this->myOwnerDocument);} function set_content($text) {return $this->myDOMNode->appendChild($this->myDOMNode->ownerDocument->createTextNode(_entityDecode($text)));} //Entity problem reported by AL-DesignWorks 2007-09-07 //function set_name($name) {return $this->myOwnerDocument->renameNode($this->myDOMNode,$this->myDOMNode->namespaceURI,$name);} function set_namespace($uri,$prefix=null) {//Contributions by Daniel Walker 2006-09-08 $nsprefix=$this->myDOMNode->lookupPrefix($uri); if ($nsprefix==null) { $nsprefix= $prefix==null ? $nsprefix='a'.sprintf('%u',crc32($uri)) : $prefix; if ($this->myDOMNode->nodeType===XML_ATTRIBUTE_NODE) { if (($prefix!=null)&&$this->myDOMNode->ownerElement->hasAttributeNS('http://www.w3.org/2000/xmlns/',$nsprefix)&& ($this->myDOMNode->ownerElement->getAttributeNS('http://www.w3.org/2000/xmlns/',$nsprefix)!=$uri)) {//Remove namespace $parent=$this->myDOMNode->ownerElement; $parent->removeAttributeNode($this->myDOMNode); $parent->setAttribute($this->myDOMNode->localName,$this->myDOMNode->nodeValue); $this->myDOMNode=$parent->getAttributeNode($this->myDOMNode->localName); return; } $this->myDOMNode->ownerElement->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:'.$nsprefix,$uri); } } if ($this->myDOMNode->nodeType===XML_ATTRIBUTE_NODE) { $parent=$this->myDOMNode->ownerElement; $parent->removeAttributeNode($this->myDOMNode); $parent->setAttributeNS($uri,$nsprefix.':'.$this->myDOMNode->localName,$this->myDOMNode->nodeValue); $this->myDOMNode=$parent->getAttributeNodeNS($uri,$this->myDOMNode->localName); } elseif ($this->myDOMNode->nodeType===XML_ELEMENT_NODE) { $NewNode=$this->myDOMNode->ownerDocument->createElementNS($uri,$nsprefix.':'.$this->myDOMNode->localName); foreach ($this->myDOMNode->attributes as $n) $NewNode->appendChild($n->cloneNode(true)); foreach ($this->myDOMNode->childNodes as $n) $NewNode->appendChild($n->cloneNode(true)); $xpath=new DOMXPath($this->myDOMNode->ownerDocument); $myDOMNodeList=$xpath->query('namespace::*[name()!="xml"]',$this->myDOMNode); //Add old namespaces foreach ($myDOMNodeList as $n) $NewNode->setAttributeNS('http://www.w3.org/2000/xmlns/',$n->nodeName,$n->nodeValue); $this->myDOMNode->parentNode->replaceChild($NewNode,$this->myDOMNode); $this->myDOMNode=$NewNode; } } function unlink_node() { if ($this->myDOMNode->parentNode!=null) { if ($this->myDOMNode->nodeType===XML_ATTRIBUTE_NODE) $this->myDOMNode->parentNode->removeAttributeNode($this->myDOMNode); else $this->myDOMNode->parentNode->removeChild($this->myDOMNode); } } protected function _importNode($newnode) {return $this->myOwnerDocument===$newnode->myOwnerDocument ? $newnode->myDOMNode : $this->myOwnerDocument->myDOMNode->importNode($newnode->myDOMNode,true);} //To import DOMNode from another DOMDocument static function _newDOMElement($aDOMNode,$aOwnerDocument) {//Check the PHP5 DOMNode before creating a new associated PHP4 DOMNode wrapper if ($aDOMNode==null) return null; switch ($aDOMNode->nodeType) { case XML_ELEMENT_NODE: return new php4DOMElement($aDOMNode,$aOwnerDocument); case XML_TEXT_NODE: return new php4DOMText($aDOMNode,$aOwnerDocument); case XML_ATTRIBUTE_NODE: return new php4DOMAttr($aDOMNode,$aOwnerDocument); case XML_PI_NODE: return new php4DomProcessingInstruction($aDOMNode,$aOwnerDocument); default: return new php4DOMNode($aDOMNode,$aOwnerDocument); } }}class php4DomProcessingInstruction extends php4DOMNode{ function data() {return $this->myDOMNode->data;} function target() {return $this->myDOMNode->target;}}class php4DOMText extends php4DOMNode{ function __get($name) { if ($name==='tagname') return '#text'; else return parent::__get($name); } function tagname() {return '#text';} function set_content($text) {$this->myDOMNode->nodeValue=$text; return true;}}if (!defined('XPATH_NODESET')){ define('XPATH_UNDEFINED',0); define('XPATH_NODESET',1); define('XPATH_BOOLEAN',2); define('XPATH_NUMBER',3); define('XPATH_STRING',4); /*define('XPATH_POINT',5); define('XPATH_RANGE',6); define('XPATH_LOCATIONSET',7); define('XPATH_USERS',8); define('XPATH_XSLT_TREE',9);*/}class php4DOMNodelist{ private $myDOMNodelist; public $nodeset; public $type=XPATH_UNDEFINED; public $value; function php4DOMNodelist($aDOMNodelist,$aOwnerDocument) { if (!isset($aDOMNodelist)) return; elseif (is_object($aDOMNodelist)||is_array($aDOMNodelist)) { if ($aDOMNodelist->length>0) { $this->myDOMNodelist=$aDOMNodelist; $this->nodeset=array(); $this->type=XPATH_NODESET; $i=0; while ($node=$this->myDOMNodelist->item($i++)) $this->nodeset[]=php4DOMNode::_newDOMElement($node,$aOwnerDocument); } } elseif (is_int($aDOMNodelist)||is_float($aDOMNodelist)) { $this->type=XPATH_NUMBER; $this->value=$aDOMNodelist; } elseif (is_bool($aDOMNodelist)) { $this->type=XPATH_BOOLEAN; $this->value=$aDOMNodelist; } elseif (is_string($aDOMNodelist)) { $this->type=XPATH_STRING; $this->value=$aDOMNodelist; } }}class php4DOMXPath{ public $myDOMXPath; private $myOwnerDocument; function php4DOMXPath($dom_document) { //TODO: If $dom_document is a DomElement, make that default $contextnode and modify XPath. Ex: '/test' $this->myOwnerDocument=$dom_document->myOwnerDocument; $this->myDOMXPath=new DOMXPath($this->myOwnerDocument->myDOMNode); } function xpath_eval($eval_str,$contextnode=null) { if (method_exists($this->myDOMXPath,'evaluate')) $xp=isset($contextnode) ? $this->myDOMXPath->evaluate($eval_str,$contextnode->myDOMNode) : $this->myDOMXPath->evaluate($eval_str); else $xp=isset($contextnode) ? $this->myDOMXPath->query($eval_str,$contextnode->myDOMNode) : $this->myDOMXPath->query($eval_str); $xp=new php4DOMNodelist($xp,$this->myOwnerDocument); return ($xp->type===XPATH_UNDEFINED) ? false : $xp; } function xpath_register_ns($prefix,$namespaceURI) {return $this->myDOMXPath->registerNamespace($prefix,$namespaceURI);}}if (extension_loaded('xsl')){//See also: http://alexandre.alapetite.net/doc-alex/xslt-php4-php5/ function domxml_xslt_stylesheet($xslstring) {return new php4DomXsltStylesheet(DOMDocument::loadXML($xslstring));} function domxml_xslt_stylesheet_doc($dom_document) {return new php4DomXsltStylesheet($dom_document);} function domxml_xslt_stylesheet_file($xslfile) {return new php4DomXsltStylesheet(DOMDocument::load($xslfile));} class php4DomXsltStylesheet { private $myxsltProcessor; function php4DomXsltStylesheet($dom_document) { $this->myxsltProcessor=new xsltProcessor(); $this->myxsltProcessor->importStyleSheet($dom_document); } function process($dom_document,$xslt_parameters=array(),$param_is_xpath=false) { foreach ($xslt_parameters as $param=>$value) $this->myxsltProcessor->setParameter('',$param,$value); $myphp4DOMDocument=new php4DOMDocument(); $myphp4DOMDocument->myDOMNode=$this->myxsltProcessor->transformToDoc($dom_document->myDOMNode); return $myphp4DOMDocument; } function result_dump_file($dom_document,$filename) { $html=$dom_document->myDOMNode->saveHTML(); file_put_contents($filename,$html); return $html; } function result_dump_mem($dom_document) {return $dom_document->myDOMNode->saveHTML();} }}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -