Hi Folks:

I just wrote a basic XML parser using the parse_xml() function set.  Does
what I want on the first document.  But, if I try to run a second document
through, it chokes saying "junk after document element."

All of the files are valid and parse okay if I just send one file through. 
Also, the program runs fine if I redeclare the parser before parsing each
file.  While this works, having to redeclare the parser each time seems far
from efficient.

So, is there a better way to handle this, please?

Sample code is below if you're interested.

Thanks,

--Dan


<?php

# Declare Parser Once.
# Only works for first file.

# NOTE: 'StartHandler', 'EndHandler' and 'CharacterHandler'
# functions left out for clarity.

$Parser = xml_parser_create('UTF-8');
xml_set_element_handler($Parser, 'StartHandler', 'EndHandler');
xml_set_character_data_handler($Parser, 'CharacterHandler');

$DirHandle = opendir("./StartTest");
while ( $FileName = readdir($DirHandle) ) {
   if ( ereg("^file.[0-9]{5}$", "$FileName") ) {
      $Contents = implode( '', file("./StartTest/$FileName") );

      if ( xml_parse($Parser, $Contents) ) {
         echo "\n<br />Yipee!";
      } else {
         echo "\n<br />UGH! ";
         echo xml_error_string(xml_get_error_code($Parser));
      }
   }
}

?>



<?php

# Declare Parser before parsing each file.
# Works fine, but seems inefficient.

# NOTE: 'StartHandler', 'EndHandler' and 'CharacterHandler'
# functions left out for clarity.

$DirHandle = opendir("./StartTest");
while ( $FileName = readdir($DirHandle) ) {
   if ( ereg("^file.[0-9]{5}$", "$FileName") ) {
      $Contents = implode( '', file("./StartTest/$FileName") );

      $Parser = xml_parser_create('UTF-8');
      xml_set_element_handler($Parser, 'StartHandler', 'EndHandler');
      xml_set_character_data_handler($Parser, 'CharacterHandler');

      if ( xml_parse($Parser, $Contents) ) {
         echo "\n<br />Yipee!";
      } else {
         echo "\n<br />UGH! ";
         echo xml_error_string(xml_get_error_code($Parser));
      }
   }
}

?>



-- 
                PHP scripts that make your job easier
              http://www.analysisandsolutions.com/code/
         SQL Solution  |  Layout Solution  |  Form Solution
 T H E   A N A L Y S I S   A N D   S O L U T I O N S   C O M P A N Y
 4015 7 Ave, Brooklyn NY 11232    v: 718-854-0335    f: 718-854-0409

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to