Changeset 829

Show
Ignore:
Timestamp:
08/14/07 21:44:16 (1 year ago)
Author:
schst
Message:

Started working on error handling in XML Stream Writer

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/main/php/net/stubbles/xml/stubDomXMLStreamWriter.php

    r718 r829  
    142142     */ 
    143143    public function writeXmlFragment($fragment) { 
    144         $fragmentNode = $this->doc->createDocumentFragment(); 
    145         $fragmentNode->appendXML($fragment); 
    146         $this->addToDom($fragmentNode); 
     144        try { 
     145            libxml_use_internal_errors(true); 
     146            $fragmentNode = $this->doc->createDocumentFragment(); 
     147            $fragmentNode->appendXML($fragment); 
     148            $this->addToDom($fragmentNode); 
     149            $errors = libxml_get_errors(); 
     150            if (!empty($errors)) { 
     151                libxml_clear_errors(); 
     152                throw new stubXMLException('Error writing document fragment: ' . $this->convertLibXmlErrorsToString($errors)); 
     153            } 
     154        } catch (DOMException $e) { 
     155            throw new stubXMLException('Error writing document fragment.', $e); 
     156        } 
    147157    } 
    148158 
     
    230240        return rtrim($this->doc->saveXML()); 
    231241    } 
     242 
     243    /** 
     244     * Converts all errors to a string 
     245     * 
     246     * @param array $errors 
     247     * @return string 
     248     */ 
     249    protected function convertLibXmlErrorsToString($errors) { 
     250        $messages = array(); 
     251        foreach ($errors as $error) { 
     252            $messages[] = trim($error->message); 
     253        } 
     254        return implode(', ', $messages); 
     255    } 
    232256} 
    233257?> 
  • trunk/src/main/php/net/stubbles/xml/stubXMLException.php

    r66 r829  
    77 * @subpackage xml 
    88 */ 
    9  
     9stubClassLoader::load('net.stubbles.lang.exceptions.stubChainedException'); 
    1010/** 
    1111 * XML Exception 
     
    1414 * @subpackage xml 
    1515 */ 
    16 class stubXMLException extends stubException {} 
     16class stubXMLException extends stubChainedException {} 
    1717?>