Re: Re: Using DOM object, how?
| From: | Ken Tozier | Date: | Mon, 19 Sep 2005 23:04:01 +0000 |
| Subject: | Re: Re: Using DOM object, how? | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-222704@lists.php.net to get a copy of this message | ||
Even better, you can just extend the DOMDocument class, which is perfect, since I'm basically just adding convenience methods.
Thanks all for your help
Ken
<?php
$x = new MyDom();
$x->createScriptElement('howdy.js');
$x->createCSSLinkElement('howdy.css');
$x->createStyledDivElement('bugColumnTitle', "I'm a styled piece of text!");
print($x->saveXML());
class MyDom extends DOMDocument
{
function createScriptElement($inPath)
{
$new_elem = $this->createElementAndAppend('script', null);
$new_elem->setAttribute('type', 'text/javascript');
$new_elem->setAttribute('src', $inPath);
}
function createCSSLinkElement($inPath)
{
$new_elem = $this->createElementAndAppend('link', null);
$new_elem->setAttribute('href', $inPath);
$new_elem->setAttribute('rel', 'stylesheet');
$new_elem->setAttribute('media', 'screen');
}
function createStyledDivElement($inStyle, $inData)
{
$new_elem = $this->createElementAndAppend('div', $inData);
$new_elem->setAttribute('class', $inStyle);
}
function createElementAndAppend($inType, $inData)
{
// setting null inData to an empty string forces a close tag which is what we want
$elem_data = ($inData == null) ? '' : $inData ;
$new_elem = $this->createElement($inType, $elem_data);
$this->appendChild($new_elem);
return $new_elem;
}
}
?>
On Sep 19, 2005, at 6:13 PM, Ken Tozier wrote:
Thanks Jasper Works perfectly on my Mac now as well. Ken On Sep 19, 2005, at 4:58 PM, Jasper Bryant-Greene wrote:<?php $x = new MyDom(); $x->createScriptElement('howdy.js'); print($x->saveXML()); class MyDom {--PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpprivate $dom;/* __construct() = PHP5 constructor */ function __construct() { $this->dom = new DOMDocument('1.0', 'iso-8859-1'); /* No need to return $this from a constructor */ }function createScriptElement($scriptPath) { $script = $this->dom->createElement('script', ''); $script->setAttribute('type', 'text/javascript'); $script->setAttribute('src', $scriptPath); $this->dom->appendChild($script); /* Doesn't make sense for a createScriptElement() method to also print out the XML, so I made a separate method and called that from the mainline code. */ }function saveXML() { return $this->dom->saveXML(); }} ?>