/** * Parses xml text using SAXY * @param Object A reference to the DOM document that the xml is to be parsed into * @param string The text to be parsed * @param boolean True if CDATA Section nodes are not to be converted into Text nodes * @return boolean True if the parsing is successful */ function parseSAXY(&$myXMLDoc, $xmlText, $preserveCDATA = true, $definedEntities) { require_once DOMIT_INCLUDE_PATH . 'xml_saxy_parser.php'; $this->xmlDoc =& $myXMLDoc; $this->lastChild =& $this->xmlDoc; //create instance of SAXY parser $parser = new SAXY_Parser(); $parser->appendEntityTranslationTable($definedEntities); //not yet implemented in SAXY!!! $parser->preserveWhitespace = $this->xmlDoc->preserveWhitespace; if ($this->xmlDoc->isNamespaceAware) { $parser->setNamespaceAwareness(true); $parser->xml_set_start_namespace_decl_handler(array(&$this, 'startNamespaceDeclaration')); $parser->xml_set_end_namespace_decl_handler(array(&$this, 'endNamespaceDeclaration')); $parser->xml_set_element_handler(array(&$this, 'startElementNS'), array(&$this, 'endElement')); $this->xmlDoc->namespaceURIMap[DOMIT_XML_NAMESPACE] = 'xml'; } else { $parser->xml_set_element_handler(array(&$this, 'startElement'), array(&$this, 'endElement')); } $parser->xml_set_character_data_handler(array(&$this, 'dataElement')); $parser->xml_set_doctype_handler(array(&$this, 'doctypeElement')); $parser->xml_set_comment_handler(array(&$this, 'commentElement')); $parser->xml_set_processing_instruction_handler(array(&$this, 'processingInstructionElement')); if ($preserveCDATA) { $parser->xml_set_cdata_section_handler(array(&$this, 'cdataElement')); } $success = $parser->parse($xmlText); $this->xmlDoc->errorCode = $parser->xml_get_error_code(); $this->xmlDoc->errorString = $parser->xml_error_string($this->xmlDoc->errorCode); return $success; }