DOMDocument::registerNodeClass

(PHP 5 >= 5.2.0)

DOMDocument::registerNodeClass — Register extended class used to create base node type

Описание

bool DOMDocument::registerNodeClass ( string $baseclass , string $extendedclass )

This method allows you to register your own extended DOM class to be used afterward by the PHP DOM extension.

This method is not part of the DOM standard.

Список параметров

baseclass

The DOM class that you want to extend. You can find a list of these classes in the chapter introduction.

Of course, you won't be able to register a class extending DOMDocument but you can always start your document by instanciating your own extending class.

extendedclass

Your extended class name. If NULL is provided, any previously registered class extending baseclass will be removed.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
PHP 5.2.2 Prior to 5.2.2, a previously registered extendedclass had to be unregistered before being able to register a new class extending the same baseclass .

Примеры

Пример #1 Adding a new method to DOMElement to ease our code

<?php

class myElement extends DOMElement {
   function 
appendElement($name) { 
      return 
$this->appendChild(new myElement($name));
   }
}

class 
myDocument extends DOMDocument {
   function 
setRoot($name) { 
      return 
$this->appendChild(new myElement($name));
   }
}

$doc = new myDocument();
$doc->registerNodeClass('DOMElement''myElement');

// From now on, adding an element to another costs only one method call ! 
$root $doc->setRoot('root');
$child $root->appendElement('child');
$child->setAttribute('foo''bar');

echo 
$doc->saveXML();

?>

Результат выполнения данного примера:

<?xml version="1.0"?>
<root><child foo="bar"/></root>

Коментарии

Note than save and saveXML are not affected by __toString().
2009-07-22 18:10:36
http://php5.kiev.ua/manual/ru/domdocument.registernodeclass.html
Creating innerHTML and outerHTML

<?php

class DOMHTMLElement extends DOMElement
{
    function 
__construct() { parent::__construct();} 
   
    public function 
innerHTML()
    {
       
$doc = new DOMDocument();
      foreach (
$this->childNodes as $child){
         
$doc->appendChild($doc->importNode($childtrue));
        }
       
$content $doc->saveHTML();
        return 
$content;
    }
   
    public function 
outerHTML()
    {
       
$doc = new DOMDocument();
       
$doc->appendChild($doc->importNode($thistrue));
       
$content $doc->saveHTML();
        return 
$content;
    }
}

$dom DOMDocument::loadHTMLFile($file);
$dom->registerNodeClass('DOMElement','DOMHTMLElement');
           
if(
$dom)
{
   
$xpath = new DOMXpath($dom);   
   
$regions $xpath->query("//*[contains(@class, 'editable')]");   
   
$content '';
   
    foreach(
$regions as $region){
       
$content .= $region->outerHTML();
    }   
   
    return 
$content;
   
}else{               
    throw new 
Exception('Cannot parse HTML.  Please verify the syntax is correct.');
}
?>
2009-09-25 23:23:46
http://php5.kiev.ua/manual/ru/domdocument.registernodeclass.html

    Поддержать сайт на родительском проекте КГБ