Fatal error: Class 'DOMIT_Lite_Document' not found in

cahbchoub Messages postés 7 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 16 octobre 2008 - 10 oct. 2008 à 09:32
cahbchoub Messages postés 7 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 16 octobre 2008 - 10 oct. 2008 à 11:17
slt à tous ,
je développe  en php et web service via joomla. j'ai l'erreur suivante qui s'affiche lors de l'exécution à la ligne suivante :
$xmlDoc = new DOMIT_Lite_Document();
l'erreur est:
Fatal error: Class 'DOMIT_Lite_Document' not found in
Merci d'avance pour votre aide, j'en ai vraiment besoin.

7 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
10 oct. 2008 à 09:34
salut
la classe DOMIT_Lite_Document n'existe pas.
0
ThomasDele Messages postés 21 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 13 octobre 2008
10 oct. 2008 à 09:55
As tu inclu le fichier php contenant ta classe?

Thomas
0
cahbchoub Messages postés 7 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 16 octobre 2008
10 oct. 2008 à 10:01
je l'ai inclue
require_once( $mosConfig_absolute_path. '/includes/domit/xml_domit_lite_parser.php' );
la classe DOMIT_Lite_Document est implementé ds ce fichier .php
0
cahbchoub Messages postés 7 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 16 octobre 2008
10 oct. 2008 à 10:08
voici mon code:
<?php
    ini_set("soap.wsdl_cache_enabled", "0");
   
    $fichier = "C:/wamp/www/progs/stockquote.wsdl";
    $client = new SoapClient($fichier);
    $xmlText= $client->getQuote("ibm");
    echo $xmlText;
    getAllDoc($xmlText);

    require_once( $mosConfig_absolute_path . '/includes/domit/xml_domit_lite_include.php' );
   
    require_once( $mosConfig_absolute_path. '/includes/domit/xml_domit_lite_parser.php' );

    function getAllDoc($xmlText){
      
        try {
        //$xmlfile = $mainframe->getPath( $path, $row->module );
        $xmlDoc = new DOMIT_Lite_Document(); // l'erreur se produit ici
        $xmlDoc->resolveErrors( true );
        if (!$xmlDoc->loadXML( $filename, false, true )) {
           return null;
        }
        $root = &$xmlDoc->documentElement;
        $tab = explode('/', $xmlText);
        $i=0;
        foreach($tab as $tv){
            echo $tab[$i]."
";

            //retourne le document du docname entré
            $root = &$xmlDoc->documentElement;
            for ($i=0; $i<4; $i++){
                $chaine = $root->getElementsByPath('//chaine',1);
                $name_chaine = $chaine->getAttribute("name_fr");
                //array_push($tab, $name_chaine);
                echo $name_chaine;
            }
        }
        $i++;
        }catch (Exception $ex) {echo $ex;}
      
    }
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
10 oct. 2008 à 10:10
on peut voir ce fichier ?
$mosConfig_absolute_path. '/includes/domit/xml_domit_lite_parser.php'
0
cahbchoub Messages postés 7 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 16 octobre 2008
10 oct. 2008 à 10:12
<?php
/**
* DOMIT! Lite is a non-validating, but lightweight and fast DOM parser for PHP
* @package domit-xmlparser
* @subpackage domit-xmlparser-lite
* @version 1.01
* @copyright (C) 2004 John Heinstein. All rights reserved
* @license http://www.gnu.org/copyleft/lesser.html LGPL License
* @author John Heinstein <johnkarl@nbnet.nb.ca>
* @link http://www.engageinteractive.com/domit/ DOMIT! Home Page
* DOMIT! is Free Software
**/

if (!defined('DOMIT_INCLUDE_PATH')) {
    define('DOMIT_INCLUDE_PATH', (dirname(__FILE__) . "/"));
}

/** current version of DOMIT! Lite */
define ('DOMIT_LITE_VERSION', '1.01');

/**
*@global array Flipped version of $definedEntities array, to allow two-way conversion of entities
*
* Made global so that Attr nodes, which have no ownerDocument property, can access the array
*/
$GLOBALS['DOMIT_defined_entities_flip'] = array();

require_once(DOMIT_INCLUDE_PATH . 'xml_domit_shared.php');

/**
* The base class of all DOMIT node types
*
* @package domit-xmlparser
* @subpackage domit-xmlparser-lite
* @author John Heinstein <johnkarl@nbnet.nb.ca>
*/
class DOMIT_Lite_Node {
    /** @var string The name of the node, varies according to node type */
    var $nodeName = null;
    /** @var string The value of the node, varies according to node type */
    var $nodeValue = null;
    /** @var int The type of node, e.g. CDataSection */
    var $nodeType = null;
    /** @var Object A reference to the parent of the current node */
    var $parentNode = null;
    /** @var Array An array of child node references */
    var $childNodes = null;
    /** @var Object A reference to the first node in the childNodes list */
    var $firstChild = null;
    /** @var Object A reference to the last node in the childNodes list */
    var $lastChild = null;
    /** @var Object A reference to the node prior to the current node in its parents childNodes list */
    var $previousSibling = null;
    /** @var Object A reference to the node after the current node in its parents childNodes list */
    var $nextSibling = null;
    /** @var Array An array of attribute key / value pairs */
    var $attributes = null;
    /** @var Object A reference to the Document node */
    var $ownerDocument = null;
    /** @var string The unique node id */
    var $uid;
    /** @var int The number of children of the current node */
    var $childCount = 0;

    /**
    * Raises error if abstract class is directly instantiated
    */
    function DOMIT_Lite_Node() {
        DOMIT_DOMException::raiseException(DOMIT_ABSTRACT_CLASS_INSTANTIATION_ERR,
             'Cannot instantiate abstract class DOMIT_Lite_Node');
    } //DOMIT_Lite_Node

    /**
    * DOMIT_Lite_Node constructor, assigns a uid
    */
    function _constructor() {
        global $uidFactory;
        $this->uid = $uidFactory->generateUID();
    } //_constructor

    /**
    * Appends a node to the childNodes list of the current node
    * @abstract
    * @param Object The node to be appended
    * @return Object The appended node
    */
    function &appendChild(&$child) {
        DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
            ('Method appendChild cannot be called by class ' . get_class($this)));
    } //appendChild

    /**
    * Inserts a node to the childNodes list of the current node
    * @abstract
    * @param Object The node to be inserted
    * @param Object The node before which the insertion is to occur
    * @return Object The inserted node
    */
    function &insertBefore(&$newChild, &$refChild) {
        DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
            ('Method insertBefore cannot be called by class ' . get_class($this)));
    } //insertBefore

    /**
    * Replaces a node with another
    * @abstract
    * @param Object The new node
    * @param Object The old node
    * @return Object The new node
    */
    function &replaceChild(&$newChild, &$oldChild) {
        DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
            ('Method replaceChild cannot be called by class ' . get_class($this)));
    } //replaceChild

    /**
    * Removes a node from the childNodes list of the current node
    * @abstract
    * @param Object The node to be removed
    * @return Object The removed node
    */
    function &removeChild(&$oldChild) {
        DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
            ('Method removeChild cannot be called by class ' . get_class($this)));
    } //removeChild

    /**
    * Returns the index of the specified node in a childNodes list
    * @param Array The childNodes array to be searched
    * @param Object The node targeted by the search
    * @return int The index of the target node, or -1 if not found
    */
    function getChildNodeIndex(&$arr, &$child) {
        $index = -1;
        $total = count($arr);

        for ($i = 0; $i < $total; $i++) {
            if ($child->uid == $arr[$i]->uid) {
                $index = $i;
                break;
            }
        }

        return $index;
    } //getChildNodeIndex

    /**
    * Determines whether a node has any children
    * @return boolean True if any child nodes are present
    */
    function hasChildNodes() {
        return ($this->childCount > 0);
    } //hasChildNodes

    /**
    * Copies a node and/or its children
    * @abstract
    * @param boolean True if all child nodes are also to be cloned
    * @return Object A copy of the node and/or its children
    */
    function &cloneNode($deep = false) {
        DOMIT_DOMException::raiseException(DOMIT_ABSTRACT_METHOD_INVOCATION_ERR,
             'Cannot invoke abstract method DOMIT_Lite_Node->cloneNode($deep). Must provide an overridden method in your subclass.');
    } //cloneNode

    /**
    * Adds elements with the specified tag name to a NodeList collection
    * @param Object The NodeList collection
    * @param string The tag name of matching elements
    */
    function getNamedElements(&$nodeList, $tagName) {
        //Implemented in DOMIT_Lite_Element.
        //Needs to be here though! This is called against all nodes in the document.
    } //getNamedElements

    /**
    * Sets the ownerDocument property of a node to the containing DOMIT_Document
    * @param Object A reference to the document element of the DOMIT_Document
    */
    function setOwnerDocument(&$rootNode) {
        if ($rootNode->ownerDocument == null) {
            unset($this->ownerDocument);
            $this->ownerDocument = null;
        }
        else {
            $this->ownerDocument =& $rootNode->ownerDocument;
        }

        $total = $this->childCount;

        for ($i = 0; $i < $total; $i++) {
            $this->childNodes[$i]->setOwnerDocument($rootNode);
        }
    } //setOwnerDocument

    /**
    * Tests whether a value is null, and if so, returns a default value
    * @param mixed The value to be tested
    * @param mixed The default value
    * @return mixed The specified value, or the default value if null
    */
    function &nvl(&$value,$default) {
          if (is_null($value)) return $default;
          return $value;
    } //nvl

    /**
    * Retrieves an element or DOMIT_NodeList of elements corresponding to an Xpath-like expression.
    * @abstract
    * @param string The query pattern
    * @param int If a single node is to be returned (rather than the entire NodeList) the index of that node
    * @return mixed A NodeList or single node that matches the pattern
    */
    function &getElementsByPath($pattern, $nodeIndex = 0) {
         DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
            ('Method getElementsByPath cannot be called by class ' . get_class($this)));
    } //getElementsByPath

    /**
    * Returns the concatented text of the current node and its children
    * @return string The concatented text of the current node and its children
    */
    function getText() {
        return $this->nodeValue;
    } //getText

    /**
    * Formats a string for presentation as HTML
    * @param string The string to be formatted
    * @param boolean True if the string is to be sent directly to output
    * @return string The HTML formatted string
    */
    function forHTML($str, $doPrint = false) {
        require_once(DOMIT_INCLUDE_PATH . 'xml_domit_utilities.php');
        return DOMIT_Utilities::forHTML($str, $doPrint);
    } //forHTML

    /**
    * Generates an array representation of the node and its children
    * @abstract
    * @return Array A representation of the node and its children
    */
    function toArray() {
        DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
            ('Method toArray cannot be called by class ' . get_class($this)));
    } //toArray

    /**
    * A node event that can be set to fire upon document loading, used for node initialization
    * @abstract
    */
    function onLoad() {
        //you can override this method if you subclass any of the
        //DOMIT_Lite_Nodes. It's a way of performing
        //initialization of your subclass as soon as the document
        //has been loaded (as opposed to as soon as the current node
        //has been instantiated).
    } //onLoad

    /**
    * Clears previousSibling, nextSibling, and parentNode references from a node that has been removed
    */
    function clearReferences() {
        if ($this->previousSibling != null) {
            unset($this->previousSibling);
            $this->previousSibling = null;
        }
        if ($this->nextSibling != null) {
            unset($this->nextSibling);
            $this->nextSibling = null;
        }
        if ($this->parentNode != null) {
            unset($this->parentNode);
            $this->parentNode = null;
        }
    } //clearReferences

    /**
    * Generates a normalized (formatted for readability) representation of the node and its children
    * @param boolean True if HTML readable output is desired
    * @param boolean True if illegal xml characters in text nodes and attributes should be converted to entities
    * @return string The formatted string representation
    */    function toNormalizedString($htmlSafe false, $subEntities false) {
        //require this file for generating a normalized (readable) xml string representation
        require_once(DOMIT_INCLUDE_PATH . 'xml_domit_utilities.php');
        global $DOMIT_defined_entities_flip;

        $result = DOMIT_Utilities::toNormalizedString($this, $subEntities, $DOMIT_defined_entities_flip);

        if ($htmlSafe) $result = $this->forHTML($result);

        return $result;
    } //toNormalizedString
} //DOMIT_Lite_Node

/**
* A parent class for nodes which possess child nodes
*
* @package domit-xmlparser
* @subpackage domit-xmlparser-lite
* @author John Heinstein <johnkarl@nbnet.nb.ca>
*/
class DOMIT_Lite_ChildNodes_Interface extends DOMIT_Lite_Node {
    /**
    * Raises error if abstract class is directly instantiated
    */
    function DOMIT_Lite_ChildNodes_Interface() {
        DOMIT_DOMException::raiseException(DOMIT_ABSTRACT_CLASS_INSTANTIATION_ERR,
             'Cannot instantiate abstract class DOMIT_Lite_ChildNodes_Interface');
    } //DOMIT_Lite_ChildNodes_Interface

    /**
    * Appends a node to the childNodes list of the current node
    * @param Object The node to be appended
    * @return Object The appended node
    */
    /**
    * Appends a node to the childNodes list of the current node
    * @param Object The node to be appended
    * @return Object The appended node
    */
    function &appendChild(&$child) {
        if (!($this->hasChildNodes())) {
            $this->childNodes[0] =& $child;
            $this->firstChild =& $child;
        }
        else {
            //remove $child if it already exists
            $index = $this->getChildNodeIndex($this->childNodes, $child);

            if ($index != -1) {
                $this->removeChild($child);
            }

            //append child
            $numNodes = $this->childCount;
            //BB: was bug auto-created wrong childnodes[-1]: added IF
            if ($numNodes>0) $prevSibling =& $this->childNodes[($numNodes - 1)];    

            $this->childNodes[$numNodes] =& $child;

            //set next and previous relationships
            //BB: added this line and the else part to finish correcting bug
            if (isset($prevSibling)) {                        
                $child->previousSibling =& $prevSibling;
                $prevSibling->nextSibling =& $child;
            } else {
                unset($child->previousSibling);
                $child->previousSibling = null;
                $this->firstChild =& $child;
            }
        }

        $this->lastChild =& $child;
        $child->parentNode =& $this;

        unset($child->nextSibling);
        $child->nextSibling = null;

        $child->setOwnerDocument($this);
        $this->childCount++;

        return $child;
    } //appendChild

    /**
    * Inserts a node to the childNodes list of the current node
    * @param Object The node to be inserted
    * @param Object The node before which the insertion is to occur
    * @return Object The inserted node
    */
    function &insertBefore(&$newChild, &$refChild) {
        if (($refChild->nodeType == DOMIT_DOCUMENT_NODE)  ||
            ($refChild->parentNode == null)) {

            DOMIT_DOMException::raiseException(DOMIT_NOT_FOUND_ERR,
                 'Reference child not present in the child nodes list.');
        }

        //if reference child is also the node to be inserted
        //leave the document as is and don't raise an exception
        if ($refChild->uid == $newChild->uid) {
            return $newChild;
        }

        //remove $newChild if it already exists
        $index = $this->getChildNodeIndex($this->childNodes, $newChild);
        if ($index != -1) {
            $this->removeChild($newChild);
        }

        //find index of $refChild in childNodes
        $index = $this->getChildNodeIndex($this->childNodes, $refChild);

        if ($index != -1) {
            //reset sibling chain
            if ($refChild->previousSibling != null) {
                $refChild->previousSibling->nextSibling =& $newChild;
                $newChild->previousSibling =& $refChild->previousSibling;
            }
            else {
                $this->firstChild =& $newChild;

                if ($newChild->previousSibling != null) {
                    unset($newChild->previousSibling);
                    $newChild->previousSibling = null;
                }
            }

            $newChild->parentNode =& $refChild->parentNode;
            $newChild->nextSibling =& $refChild;
            $refChild->previousSibling =& $newChild;

            //add node to childNodes
            $i = $this->childCount;

            while ($i >= 0) {
                if ($i > $index) {
                    $this->childNodes[$i] =& $this->childNodes[($i - 1)];
                }
                else if ($i == $index) {
                    $this->childNodes[$i] =& $newChild;
                }
                $i--;
            }

            $this->childCount++;
        }
        else {
            $this->appendChild($newChild);
        }

        $newChild->setOwnerDocument($this);

        return $newChild;
    } //insertBefore

    /**
    * Replaces a node with another
    * @param Object The new node
    * @param Object The old node
    * @return Object The new node
    */
    function &replaceChild(&$newChild, &$oldChild) {
        if ($this->hasChildNodes()) {
            //remove $newChild if it already exists
            $index = $this->getChildNodeIndex($this->childNodes, $newChild);
            if ($index != -1) {
                $this->removeChild($newChild);
            }

            //find index of $oldChild in childNodes
            $index = $this->getChildNodeIndex($this->childNodes, $oldChild);

            if ($index != -1) {
                $newChild->ownerDocument =& $oldChild->ownerDocument;
                $newChild->parentNode =& $oldChild->parentNode;

                //reset sibling chain
                if ($oldChild->previousSibling == null) {
                    unset($newChild->previousSibling);
                    $newChild->previousSibling = null;
                }
                else {
                    $oldChild->previousSibling->nextSibling =& $newChild;
                    $newChild->previousSibling =& $oldChild->previousSibling;
                }

                if ($oldChild->nextSibling == null) {
                    unset($newChild->nextSibling);
                    $newChild->nextSibling = null;
                }
                else {
                    $oldChild->nextSibling->previousSibling =& $newChild;
                    $newChild->nextSibling =& $oldChild->nextSibling;
                }

                $this->childNodes[$index] =& $newChild;
                if ($index 0) $this->firstChild& $newChild;                if ($index ($this->childCount - 1)) $this->lastChild& $newChild;

                $newChild->setOwnerDocument($this);

                return $newChild;
            }
        }

        DOMIT_DOMException::raiseException(DOMIT_NOT_FOUND_ERR,
            ('Reference node for replaceChild not found.'));
    } //replaceChild

    /**
    * Removes a node from the childNodes list of the current node
    * @param Object The node to be removed
    * @return Object The removed node
    */
    function &removeChild(&$oldChild) {
        if ($this->hasChildNodes()) {
            //find index of $oldChild in childNodes
            $index = $this->getChildNodeIndex($this->childNodes, $oldChild);

            if ($index != -1) {
                //reset sibling chain
                if (($oldChild->previousSibling != null) && ($oldChild->nextSibling != null)) {
                    $oldChild->previousSibling->nextSibling =& $oldChild->nextSibling;
                    $oldChild->nextSibling->previousSibling =& $oldChild->previousSibling;
                }                else if (($oldChild->previousSibling !null) && ($oldChild->nextSibling null)) {
                    $this->lastChild =& $oldChild->previousSibling;
                    unset($oldChild->previousSibling->nextSibling);
                    $oldChild->previousSibling->nextSibling = null;
                }
                else if (($oldChild->previousSibling == null) && ($oldChild->nextSibling != null)) {
                    unset($oldChild->nextSibling->previousSibling);
                    $oldChild->nextSibling->previousSibling = null;
                    $this->firstChild =& $oldChild->nextSibling;
                }                else if (($oldChild->previousSibling null) && ($oldChild->nextSibling null)) {
                    unset($this->firstChild);
                    $this->firstChild = null;
                    unset($this->lastChild);
                    $this->lastChild = null;
                }

                $total = $this->childCount;

                //remove node from childNodes
                for ($i = 0; $i < $total; $i++) {
                    if ($i == ($total - 1)) {
                        array_splice($this->childNodes, $i, 1);
                    }
                    else if ($i >= $index) {
                        $this->childNodes[$i] =& $this->childNodes[($i + 1)];
                    }
                }

                $this->childCount--;

                $oldChild->clearReferences();
                return $oldChild;
            }
        }

        DOMIT_DOMException::raiseException(DOMIT_NOT_FOUND_ERR,
                ('Target node for removeChild not found.'));
    } //removeChild

    /**
    * Searches the element tree for an element with the specified attribute name and value.
    * @param string The value of the attribute
    * @param string The name of the attribute
    * @param boolean True if the first found node is to be returned as a node instead of a nodelist
    * @param boolean True if uid is to be considered an attribute
    * @return object A NodeList of found elements, or null
    */    function &getElementsByAttribute($attrName 'id', $attrValue '',                        $returnFirstFoundNode false, $treatUIDAsAttribute false) {
        require_once(DOMIT_INCLUDE_PATH . 'xml_domit_nodemaps.php');

        $nodelist = new DOMIT_NodeList();

        switch ($this->nodeType) {
            case DOMIT_ELEMENT_NODE:
                $this->_getElementsByAttribute($nodelist, $attrName, $attrValue,
                                        $returnFirstFoundNode, $treatUIDAsAttribute);
                break;

            case DOMIT_DOCUMENT_NODE:
                if ($this->documentElement != null) {
                    $this->documentElement->_getElementsByAttribute($nodelist,
                        $attrName, $attrValue, $returnFirstFoundNode, $treatUIDAsAttribute);
                }
                break;
        }

        if ($returnFirstFoundNode) {
            if ($nodelist->getLength() > 0) {
                return $nodelist->item(0);
            }
            return null;
        }

        return $nodelist;
    } //getElementsByAttribute

    /**
    * Searches the element tree for an element with the specified attribute name and value.
    * @param object The node list of found elements
    * @param string The value of the attribute
    * @param string The name of the attribute
    * @param boolean True if the first found node is to be returned as a node instead of a nodelist
    * @param boolean True if uid is to be considered an attribute
    * @param boolean True the node has been found
    */
    function _getElementsByAttribute(&$nodelist, $attrName, $attrValue,
                        $returnFirstFoundNode, $treatUIDAsAttribute, $foundNode = false) {
        if (!($foundNode && $returnFirstFoundNode)) {
            if (($this->getAttribute($attrName) == $attrValue) ||                ($treatUIDAsAttribute && ($attrName 'uid') && ($this->uid $attrValue))) {
                $nodelist->appendNode($this);
                $foundNode = true;
                if ($returnFirstFoundNode) return;
            }

            $total = $this->childCount;

            for ($i = 0; $i < $total; $i++) {
                $currNode =& $this->childNodes[$i];

                if ($currNode->nodeType == DOMIT_ELEMENT_NODE) {
                    $currNode->_getElementsByAttribute($nodelist,
                                    $attrName, $attrValue, $returnFirstFoundNode,
                                    $treatUIDAsAttribute, $foundNode);
                }
            }
        }
    } //_getElementsByAttribute
} //DOMIT_Lite_ChildNodes_Interface

/**
* A class representing the DOM Document
*
* @package domit-xmlparser
* @subpackage domit-xmlparser-lite
* @author John Heinstein <johnkarl@nbnet.nb.ca>
*/
class DOMIT_Lite_Document extends DOMIT_Lite_ChildNodes_Interface {
    /** @var string The xml declaration text */
    var $xmlDeclaration;
    /** @var string The doctype text */
    var $doctype;
    /** @var Object A reference to the root node of the DOM document */
    var $documentElement;
    /** @var string The parser used to process the DOM document, either "EXPAT" or "SAXY_LITE" */
    var $parser;
    /** @var Object A reference to the DOMIT_DOMImplementation object */
    var $implementation;
    /** @var Array User defined translation table for XML entities */
    var $definedEntities = array();
    /** @var boolean If true, loadXML or parseXML will attempt to detect and repair invalid xml */
    var $doResolveErrors = false;
    /** @var boolean True if whitespace is to be preserved during parsing */
    var $preserveWhitespace = false;
    /** @var boolean If true, elements tags will be rendered to string as <element></element> rather than <element/> */
    var $doExpandEmptyElementTags = false;
    /** @var array A list of exceptions to the empty element expansion rule */
    var $expandEmptyElementExceptions = array();
    /** @var int The error code returned by the SAX parser */
    var $errorCode = 0;
    /** @var string The error string returned by the SAX parser */
    var $errorString = '';
    /** @var object A reference to a http connection or proxy server, if one is required */
    var $httpConnection = null;
    /** @var boolean True if php_http_client_generic is to be used instead of PHP get_file_contents to retrieve xml data */
    var $doUseHTTPClient = false;

    /**
    * DOM Document constructor
    */
    function DOMIT_Lite_Document() {
        $this->_constructor();
        $this->xmlDeclaration = '';
        $this->doctype = '';
        $this->documentElement = null;
        $this->nodeType = DOMIT_DOCUMENT_NODE;
        $this->nodeName = '#document';
        $this->ownerDocument =& $this;
        $this->parser = '';
        $this->implementation = new DOMIT_DOMImplementation();
    } //DOMIT_Lite_Document

    /**
    * Specifies whether DOMIT! Lite will try to fix invalid XML before parsing begins
    * @param boolean True if errors are to be resolved
    */
    function resolveErrors($truthVal) {
        $this->doResolveErrors = $truthVal;
    } //resolveErrors

    /**
    * Specifies the parameters of the http conection used to obtain the xml data
    * @param string The ip address or domain name of the connection
    * @param string The path of the connection
    * @param int The port that the connection is listening on
    * @param int The timeout value for the connection
    * @param string The user name, if authentication is required
    * @param string The password, if authentication is required
    */    function setConnection($host, $path '/', $port 80, $timeout = 0, $user = null, $password = null) {
        require_once(DOMIT_INCLUDE_PATH . 'php_http_client_generic.php');

        $this->httpConnection = new php_http_client_generic($host, $path, $port, $timeout, $user, $password);
    } //setConnection

    /**
    * Specifies whether DOMIT! preserves whitespace when parsing
    * @param boolean True if whitespace is to be preserved
    */
    function preserveWhitespace($truthVal) {
        $this->preserveWhitespace = $truthVal;
    } //preserveWhitespace

    /**
    * Specifies basic authentication for an http connection
    * @param string The user name
    * @param string The password
    */
    function setAuthorization($user, $password) {
        $this->httpConnection->setAuthorization($user, $password);
    } //setAuthorization

    /**
    * Specifies that a proxy is to be used to obtain the xml data
    * @param string The ip address or domain name of the proxy
    * @param string The path to the proxy
    * @param int The port that the proxy is listening on
    * @param int The timeout value for the connection
    * @param string The user name, if authentication is required
    * @param string The password, if authentication is required
    */    function setProxyConnection($host, $path '/', $port 80, $timeout = 0, $user = null, $password = null) {
        require_once(DOMIT_INCLUDE_PATH . 'php_http_proxy.php');

        $this->httpConnection = new php_http_proxy($host, $path, $port, $timeout, $user, $password);
    } //setProxyConnection

    /**
    * Specifies basic authentication for the proxy
    * @param string The user name
    * @param string The password
    */
    function setProxyAuthorization($user, $password) {
        $this->httpConnection->setProxyAuthorization($user, $password);
    } //setProxyAuthorization

    /**
    * Specifies whether an HTTP client should be used to establish a connection
    * @param boolean True if an HTTP client is to be used to establish the connection
    */
    function useHTTPClient($truthVal) {
        $this->doUseHTTPClient = $truthVal;
    } //useHTTPClient

    /**
    * Returns the error code from the underlying SAX parser
    * @return int The error code
    */
    function getErrorCode() {
        return $this->errorCode;
    } //getErrorCode

    /**
    * Returns the error string from the underlying SAX parser
    * @return string The error string
    */
    function getErrorString() {
        return $this->errorString;
    } //getErrorString

    /**
    * Specifies whether elements tags will be rendered to string as <element></element> rather than <element/>
    * @param boolean True if the expanded form is to be used
    * @param mixed An array of tag names that should be excepted from expandEmptyElements rule (optional)
    */
    function expandEmptyElementTags($truthVal, $expandEmptyElementExceptions = false) {
        $this->doExpandEmptyElementTags = $truthVal;

        if (is_array($expandEmptyElementExceptions)) {
            $this->expandEmptyElementExceptions = $expandEmptyElementExceptions;
        }
    } //expandEmptyElementTags

    /**
    * Set the specified node as document element
    * @param Object The node that is to become document element
    * @return Object The new document element
    */
    function &setDocumentElement(&$node) {
        if ($node->nodeType == DOMIT_ELEMENT_NODE) {
            if ($this->documentElement == null) {
                parent::appendChild($node);
            }
            else {
                parent::replaceChild($node, $this->documentElement);
            }

            $this->documentElement =& $node;
        }
        else {
            DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
                ('Cannot add a node of type ' . get_class($node) . ' as a Document Element.'));
        }

        return $node;
    } //setDocumentElement

    /**
    * Appends a node to the childNodes list of the current node
    * @param Object The node to be appended
    * @return Object The appended node
    */
    function &appendChild(&$node) {
        if ($node->nodeType == DOMIT_ELEMENT_NODE) {
            if ($this->documentElement == null) {
                parent::appendChild($node);
                $this->setDocumentElement($node);
            }
            else {
                //error thrown if documentElement already exists!
                DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
                    ('Cannot have more than one root node (documentElement) in a DOMIT_Document.'));
            }
        }
        else {
            DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
                ('Cannot add a node of type ' . get_class($node) . ' to a DOMIT_Document.'));
        }

        return $node;
    } //appendChild

    /**
    * Replaces a node with another
    * @param Object The new node
    * @param Object The old node
    * @return Object The new node
    */
    function &replaceChild(&$newChild, &$oldChild) {            if (($this->documentElement !null) && ($oldChild->uid $this->documentElement->uid)) {
                if ($node->nodeType == DOMIT_ELEMENT_NODE) {
                    //replace documentElement with new node
                    $this->setDocumentElement($newChild);
                }
                else {
                    DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
                        ('Cannot replace Document Element with a node of class ' . get_class($newChild)));
                }
            }
            else {
                if ($node->nodeType == DOMIT_ELEMENT_NODE) {
                    if ($this->documentElement != null) {
                        DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
                            ('Cannot have more than one root node (documentElement) in a DOMIT_Document.'));
                    }
                    else {
                        parent::replaceChild($newChild, $oldChild);
                    }
                }
                else {
                    DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
                        ('Nodes of class ' . get_class($newChild) . ' cannot be children of a DOMIT_Document.'));
                }
            }

        return $newChild;
    } //replaceChild

    /**
    * Inserts a node to the childNodes list of the current node
    * @param Object The node to be inserted
    * @param Object The node before which the insertion is to occur
    * @return Object The inserted node
    */
    function &insertBefore(&$newChild, &$refChild) {
        $type = $newChild->nodeType;

        if ($type == DOMIT_ELEMENT_NODE) {
            if ($this->documentElement == null) {
                parent::insertBefore($newChild, $refChild);
                $this->setDocumentElement($newChild);
            }
            else {
                //error thrown if documentElement already exists!
                DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
                    ('Cannot have more than one root node (documentElement) in a DOMIT_Document.'));
            }
        }
        else {
            DOMIT_DOMException::raiseException(DOMIT_HIERARCHY_REQUEST_ERR,
                ('Cannot insert a node of type ' . get_class($newChild) . ' to a DOMIT_Document.'));
        }

        return $newChild;
    } //insertBefore

    /**
    * Removes a node from the childNodes list of the current node
    * @param Object The node to be removed
    * @return Object The removed node
    */
    function &removeChild(&$oldChild) {        if (($this->documentElement !null) && ($oldChild->uid $this->documentElement->uid)) {
            parent::removeChild($oldChild);
            $this->documentElement = null;
        }
        else {
            parent::removeChild($oldChild);
        }

        $oldChild->clearReferences();
        return $oldChild;
    } //removeChild

    /**
    * Creates a new DOMIT_Lite_Element node
    * @param string The tag name of the element
    * @return Object The new element
    */
    function &createElement($tagName) {
        $node = new DOMIT_Lite_Element($tagName);
        $node->ownerDocument = $this;

        return $node;
    } //createElement

    /**
    * Creates a new DOMIT_Text node
    * @param string The text of the node
    * @return Object The new text node
    */
    function &createTextNode($data) {
        $node = new DOMIT_Lite_TextNode($data);
        $node->ownerDocument = $this;

        return $node;
    } //createTextNode

    /**
    * Creates a new DOMIT_Lite_CDATASection node
    * @param string The text of the CDATASection
    * @return Object The new CDATASection node
    */
    function &createCDATASection($data) {
        $node = new DOMIT_Lite_CDATASection($data);
        $node->ownerDocument = $this;

        return $node;
    } //createCDATASection

    /**
    * Retrieves a NodeList of child elements with the specified tag name
    * @param string The matching element tag name
    * @return Object A NodeList of found elements
    */
    function &getElementsByTagName($tagName) {
        $nodeList = new DOMIT_NodeList();

        if ($this->documentElement != null) {
            $this->documentElement->getNamedElements($nodeList, $tagName);
        }

        return $nodeList;
    } //getElementsByTagName

    /**
    * Retrieves an element or DOMIT_NodeList of elements corresponding to an Xpath-like expression.
    * @param string The query pattern
    * @param int If a single node is to be returned (rather than the entire NodeList) the index of that node
    * @return mixed A NodeList or single node that matches the pattern
    */
    function &getElementsByPath($pattern, $nodeIndex = 0) {
        require_once(DOMIT_INCLUDE_PATH . 'xml_domit_getelementsbypath.php');

        $gebp = new DOMIT_GetElementsByPath();
        $myResponse =& $gebp->parsePattern($this, $pattern, $nodeIndex);

        return $myResponse;
    } //getElementsByPath

    /**
    * Parses an xml string; first encodes string as UTF-8
    * @param string The xml text to be parsed
    * @param boolean True if SAXY is to be used instead of Expat
    * @param boolean False if CDATA Section are to be generated as Text nodes
    * @param boolean True if onLoad is to be called on each node after parsing
    * @return boolean True if parsing is successful
    */    function parseXML_utf8($xmlText, $useSAXY true, $preserveCDATA true, $fireLoadEvent = false) {
        return $this->parseXML(utf8_encode($xmlText), $useSAXY, $preserveCDATA, $fireLoadEvent);
    } //parseXML_utf8

    /**
    * Parses an xml string
    * @param string The xml text to be parsed
    * @param boolean True if SAXY is to be used instead of Expat
    * @param boolean False if CDATA Section are to be generated as Text nodes
    * @param boolean True if onLoad is to be called on each node after parsing
    * @return boolean True if parsing is successful
    */    function parseXML($xmlText, $useSAXY true, $preserveCDATA true, $fireLoadEvent = false) {
        require_once(DOMIT_INCLUDE_PATH . 'xml_domit_utilities.php');

        if ($this->doResolveErrors) {
            require_once(DOMIT_INCLUDE_PATH . 'xml_domit_doctor.php');
            $xmlText = DOMIT_Doctor::fixAmpersands($xmlText);
        }

        if (DOMIT_Utilities::validateXML($xmlText)) {
            $domParser = new DOMIT_Lite_Parser();

            if ($useSAXY || (!function_exists('xml_parser_create'))) {
                //use SAXY parser to populate xml tree
                $this->parser = 'SAXY_LITE';
                $success = $domParser->parseSAXY($this, $xmlText, $preserveCDATA, $this->definedEntities);
            }
            else {
                //use Expat parser to populate xml tree
                $this->parser = 'EXPAT';
                $success = $domParser->parse($this, $xmlText, $preserveCDATA);
            }

            if ($fireLoadEvent && ($this->documentElement != null)) $this->load($this->documentElement);

            return $success;
        }

        return false;
    } //parseXML

    /**
    * Parses an xml file; first encodes text as UTF-8
    * @param string The xml file to be parsed
    * @param boolean True if SAXY is to be used instead of Expat
    * @param boolean False if CDATA Section are to be generated as Text nodes
    * @param boolean True if onLoad is to be called on each node after parsing
    * @return boolean True if parsing is successful
    */    function loadXML_utf8($filename, $useSAXY true, $preserveCDATA true, $fireLoadEvent = false) {
        $xmlText = $this->getTextFromFile($filename);
        return $this->parseXML_utf8($xmlText, $useSAXY, $preserveCDATA, $fireLoadEvent);
    } //loadXML_utf8

    /**
    * Parses an xml file
    * @param string The xml file to be parsed
    * @param boolean True if SAXY is to be used instead of Expat
    * @param boolean False if CDATA Section are to be generated as Text nodes
    * @param boolean True if onLoad is to be called on each node after parsing
    * @return boolean True if parsing is successful
    */    function loadXML($filename, $useSAXY true, $preserveCDATA true, $fireLoadEvent = false) {
        $xmlText = $this->getTextFromFile($filename);
        return $this->parseXML($xmlText, $useSAXY, $preserveCDATA, $fireLoadEvent);
    } //loadXML

    /**
    * Establishes a connection, given an url
    * @param string The url of the data
    */
    function establishConnection($url) {
        require_once(DOMIT_INCLUDE_PATH . 'php_http_client_generic.php');

        $host = php_http_connection::formatHost($url);
        $host = substr($host, 0, strpos($host, '/'));

        $this->setConnection($host);
    } //establishConnection

    /**
    * Retrieves text from a file
    * @param string The file path
    * @return string The text contained in the file
    */
    function getTextFromFile($filename) {
        if ($this->doUseHTTPClient && (substr($filename, 0, 5) == 'http:')) {
            $this->establishConnection($filename);
        }

        if ($this->httpConnection != null) {
            $response =& $this->httpConnection->get($filename);
            $this->httpConnection->disconnect();
            return $response->getResponse();
        }
        else if (function_exists('file_get_contents')) {
            //if (file_exists($filename)) {
                return file_get_contents($filename);
            //}
        }
        else {
            require_once(DOMIT_INCLUDE_PATH . 'php_file_utilities.php');

            $fileContents =& php_file_utilities::getDataFromFile($filename, 'r');
            return $fileContents;
        }

        return '';
    } //getTextFromFile

    /**
    * Saves the current DOM document as an xml file; first encodes text as UTF-8
    * @param string The path of the xml file
    * @param boolean True if xml text is to be normalized before saving
    * @return boolean True if save is successful
    */
    function saveXML_utf8($filename, $normalized=false) {
        if ($normalized) {
            $stringRep = $this->toNormalizedString(false, true); //param 2 is $subEntities
        }
        else {
            $stringRep = $this->toString(false, true);
        }

        return $this->saveTextToFile($filename, utf8_encode($stringRep));
    } //saveXML_utf8

    /**
    * Saves the current DOM document as an xml file
    * @param string The path of the xml file
    * @param boolean True if xml text is to be normalized before saving
    * @return boolean True if save is successful
    */
    function saveXML($filename, $normalized=false) {
        if ($normalized) {
            $stringRep = $this->toNormalizedString(false, true);
        }
        else {
            $stringRep = $this->toString(false, true);
        }
        if ($this->xmlDeclaration) {
            $stringRep = $this->xmlDeclaration . "\n" . $stringRep;
        }
        return $this->saveTextToFile($filename, $stringRep);
    } //saveXML

    /**
    * Saves text to a file
    * @param string The file path
    * @param string The text to be saved
    * @return boolean True if the save is successful
    */
    function saveTextToFile($filename, $text) {
        if (function_exists('file_put_contents')) {
            file_put_contents($filename, $text);
        }
        else {
            require_once(DOMIT_INCLUDE_PATH . 'php_file_utilities.php');
            php_file_utilities::putDataToFile($filename, $text, 'w');
        }

        return (file_exists($filename) && is_writable($filename));
    } //saveTextToFile

    /**
    * Indicates the SAX parser used to parse the current document
    * @return string Either "SAXY_LITE" or "EXPAT"
    */
    function parsedBy() {
        return $this->parser;
    } //parsedBy

    /**
    * Returns the concatented text of the current node and its children
    * @return string The concatented text of the current node and its children
    */
    function getText() {
        if ($this->documentElement != null) {
            $root =& $this->documentElement;
            return $root->getText();
        }

        return '';
    } //getText

    /**
    * Returns the doctype text
    * @return string The doctype text, or an emty string
    */
    function getDocType() {
        return $this->doctype;
    } //getDocType

    /**
    * Returns the xml declaration text
    * @return mixed The xml declaration text, or an empty string
    */
    function getXMLDeclaration() {
        return $this->xmlDeclaration;
    } //getXMLDeclaration

    /**
    * Returns the xml declaration text
    * @return mixed The xml declaration text, or an empty string
    */
    function setXMLDeclaration( $decl ) {
        $this->xmlDeclaration = $decl;
    } //setXMLDeclaration

    /**
    * Returns a reference to the DOMIT_DOMImplementation object
    * @return Object A reference to the DOMIT_DOMImplementation object
    */
    function &getDOMImplementation() {
        return $this->implementation;
    } //getDOMImplementation

    /**
    * Manages the firing of the onLoad() event
    * @param Object The parent node of the current recursion
    */
    function load(&$contextNode) {
        $total = $contextNode->childCount;

        for ($i = 0; $i < $total; $i++) {
            $currNode =& $contextNode->childNodes[$i];
            $currNode->ownerDocument->load($currNode);
        }

        $contextNode->onLoad();
    } //load

    /**
    * Returns the current version of DOMIT! Lite
    * @return Object The current version of DOMIT! Lite
    */
    function getVersion() {
        return DOMIT_LITE_VERSION;
    } //getVersion

    /**
    * Appends an array of entity mappings to the existing translation table
    *
    * Intended mainly to facilitate the conversion of non-ASCII entities into equivalent characters
    *
    * @param array A list of entity mappings in the format: array('&amp;' => '&');
    */
    function appendEntityTranslationTable($table) {
        $this->definedEntities = $table;

        global $DOMIT_defined_entities_flip;
        $DOMIT_defined_entities_flip = array_flip($table);
    } //appendEntityTranslationTable

    /**
    * Generates an array representation of the node and its children
    * @return Array A representation of the node and its children
    */
    function toArray() {        $arReturn array($this->nodeName> array());
        $total = $this->childCount;

        for ($i = 0; $i < $total; $i++) {
            $arReturn[$this->nodeName][$i] = $this->childNodes[$i]->toArray();
        }

        return $arReturn;
    } //toArray

    /**
    * Copies a node and/or its children
    * @param boolean True if all child nodes are also to be cloned
    * @return Object A copy of the node and/or its children
    */
    function &cloneNode($deep = false) {
        $className = get_class($this);
        $clone = new $className($this->nodeName);

        if ($deep) {
            $total = $this->childCount;

            for ($i = 0; $i < $total; $i++) {
                $currentChild =& $this->childNodes[$i];
                $clone->appendChild($currentChild->cloneNode($deep));
            }
        }

        return $clone;
    } //cloneNode

    /**
    * Generates a string representation of the node and its children
    * @param boolean True if HTML readable output is desired
    * @param boolean True if illegal xml characters in text nodes and attributes should be converted to entities
    * @return string The string representation
    */    function toString($htmlSafe false, $subEntities false) {
        $result = '';
        $total = $this->childCount;

        for ($i = 0; $i < $total; $i++) {
            $result .= $this->childNodes[$i]->toString(false, $subEntities);
        }

        if ($htmlSafe) $result = $this->forHTML($result);

        return $result;
    } //toString
} //DOMIT_Lite_Document

/**
* A class representing the DOM Element
*
* @package domit-xmlparser
* @subpackage domit-xmlparser-lite
* @author John Heinstein <johnkarl@nbnet.nb.ca>
*/
class DOMIT_Lite_Element extends DOMIT_Lite_ChildNodes_Interface {
    /**
    * DOM Element constructor
    * @param string The tag name of the element
    */
    function DOMIT_Lite_Element($tagName) {
        $this->_constructor();
        $this->nodeType = DOMIT_ELEMENT_NODE;
        $this->nodeName = $tagName;
        $this->attributes = array();
        $this->childNodes = array();
    } //DOMIT_Lite_Element

    /**
    * Returns the tag name of the element
    * @return string The tag name of the element
    */
    function getTagName() {
        return $this->nodeName;
    } //getTagName

    /**
    * Adds elements with the specified tag name to a NodeList collection
    * @param Object The NodeList collection
    * @param string The tag name of matching elements
    */
    function getNamedElements(&$nodeList, $tagName) {        if (($this->nodeName $tagName) || ($tagName '*')) {
            $nodeList->appendNode($this);
        }

        $total = $this->childCount;

        for ($i = 0; $i < $total; $i++) {
            $this->childNodes[$i]->getNamedElements($nodeList, $tagName);
        }
    } //getNamedElements

    /**
    * Returns the concatented text of the current node and its children
    * @return string The concatented text of the current node and its children
    */
    function getText() {
        $text = '';
        $numChildren = $this->childCount;

        for ($i = 0; $i < $numChildren; $i++) {
            $child =& $this->childNodes[$i];
            $text .= $child->getText();
        }

        return $text;
    } //getText

    /**
    * If a child text node exists, sets the nodeValue to $data. A child text node is created if none exists
    * @param string The text data of the node
    */
    function setText($data) {
        switch ($this->childCount) {
            case 1:
                if ($this->firstChild->nodeType == DOMIT_TEXT_NODE) {
                    $this->firstChild->setText($data);
                }
                break;

            case 0:
                $childTextNode =& $this->ownerDocument->createTextNode($data);
                $this->appendChild($childTextNode);
                break;

            default:
                //do nothing. Maybe throw error???
        }
    } //setText

    /**
    * Retrieves a NodeList of child elements with the specified tag name
    * @param string The matching element tag name
    * @return Object A NodeList of found elements
    */
    function &getElementsByTagName($tagName) {
        $nodeList = new DOMIT_NodeList();
        $this->getNamedElements($nodeList, $tagName);

        return $nodeList;
    } //getElementsByTagName

    /**
    * Retrieves an element or DOMIT_NodeList of elements corresponding to an Xpath-like expression.
    * @param string The query pattern
    * @param int If a single node is to be returned (rather than the entire NodeList) the index of that node
    * @return mixed A NodeList or single node that matches the pattern
    */
    function &getElementsByPath($pattern, $nodeIndex = 0) {
        require_once(DOMIT_INCLUDE_PATH . 'xml_domit_getelementsbypath.php');

        $gebp = new DOMIT_GetElementsByPath();
        $myResponse = $gebp->parsePattern($this, $pattern, $nodeIndex);

        return $myResponse;
    } //getElementsByPath

    /**
    * Gets the value of the specified attribute, if it exists
    * @param string The attribute name
    * @return string The attribute value
    */
    function getAttribute($name) {
        if ($this->hasAttribute($name)) {
            return $this->attributes[$name];
        }
        else {
            /*
            DOMIT_DOMException::raiseException(DOMIT_NOT_FOUND_ERR,
            ('No attribute named ' . $name . 'exists.'));
            */
            // Joomla! hack
            return null;
        }
    } //getAttribute

    /**
    * Sets the value of the specified attribute; creates a new attribute if one doesn't exist
    * @param string The attribute name
    * @param string The desired attribute value
    */
    function setAttribute($name, $value) {
        $this->attributes[$name] = $value;
    } //setAttribute

    /**
    * Removes the specified attribute
    * @param string The name of the attribute to be removed
    */
    function removeAttribute($name) {
        if ($this->hasAttribute($name)) {
            unset($this->attributes[$name]);
        }
    } //removeAttribute

    /**
    * Determines whether an attribute with the specified name exists
    * @param string The name of the attribute
    * @return boolean True if the attribute exists
    */
    function hasAttribute($name) {
        return isset($this->attributes[$name]);
    } //hasAttribute

    /**
    * Collapses adjacent text nodes in entire element subtree
    */
    function normalize() {
        if ($this->hasChildNodes()) {
            $currNode =& $this->childNodes[0];

            while ($currNode->nextSibling != null) {
                $nextNode =& $currNode->nextSibling;

                if (($currNode->nodeType == DOMIT_TEXT_NODE) &&
                    ($nextNode->nodeType == DOMIT_TEXT_NODE)) {
                    $currNode->nodeValue .= $nextNode->nodeValue;
                    $this->removeChild($nextNode);
                }
                else {
                    $currNode->normalize();
                }

                if ($currNode->nextSibling != null) {
                    $currNode =& $currNode->nextSibling;
                }
            }
        }
    } //normalize

    /**
    * Generates an array representation of the node and its children
    * @return Array A representation of the node and its children
    */
    function toArray() {        $arReturn array($this->nodeName> array("attributes" => $this->attributes));
        $total = $this->childCount;

        for ($i = 0; $i < $total; $i++) {
            $arReturn[$this->nodeName][$i] = $this->childNodes[$i]->toArray();
        }

        return $arReturn;
    } //toArray

    /**
    * Copies a node and/or its children
    * @param boolean True if all child nodes are also to be cloned
    * @return Object A copy of the node and/or its children
    */
    function &cloneNode($deep = false) {
        $className = get_class($this);
        $clone = new $className($thi
0
cahbchoub Messages postés 7 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 16 octobre 2008
10 oct. 2008 à 11:17
j'ai résolu cette erreur

mais j'en une autre : Fatal error: Call to a member function getElementsByPath() on a non-object in à la ligne écrite en gras
Tu ne pourra pas m'aider sur celle ci le code est le suivant:

    $xmlDoc = new DOMIT_Lite_Document();
        $xmlDoc->resolveErrors( true );
        if (!$xmlDoc->loadXML( "c://progs.dbxml", false, true )) {
           return null;
        }
        $root = &$xmlDoc->documentElement;
        $tab = explode('/', $xmlText);
        $i=0;
        foreach($tab as $tv){
            echo $tab[$i]."
";
            $chaine = $root->getElementsByPath('//chaine',1);
            $name_chaine = $chaine->getAttribute("name_fr");
            $i++;
        }

Merci d'avance
       
0
Rejoignez-nous