From: adminsun at 126 dot com
Operating system: WindowsXP
PHP version: 5.0.3
PHP Bug Type: XML related
Bug description: XML in PHP5
Description:
------------
This Code in PHP 4 running is ok, But in PHP5 Display "XML error: Invalid
character at line 2", Why??
Reproduce code:
---------------
function makeTree($XML_FILE = ""){
if(get_magic_quotes_runtime()){
set_magic_quotes_runtime (0);
$mq = 1;
}
$this->parser = xml_parser_create();
xml_set_object($this->parser, &$this);
xml_set_element_handler($this->parser, "startElement", "endElement");
xml_set_character_data_handler ( $this->parser, "dataElement");
if($XML_FILE){
if (!($fp = fopen($XML_FILE, "r"))) {
die("Could not open XML file");
}
}
else{
if (!($fp = fopen($this->file, "r"))) {
die("Could not open XML file");
}
}
while ($data = fread($fp, 4096)) {
$ffile=xml_parse($this->parser, $data, feof($fp));
if (!$ffile) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->parser)),
xml_get_current_line_number($this->parser)));
}
}
xml_parser_free($this->parser);
if($mq){
set_magic_quotes_runtime (1);
}
return $this->displayTree();
} // end makeTree()
//----------------------------------------------------------------------------------------
function makeTreeText($XML_TEXT = ""){
if(get_magic_quotes_runtime()){
set_magic_quotes_runtime (0);
$mq = 1;
}
$this->parser = xml_parser_create();
xml_set_object($this->parser, &$this);
xml_set_element_handler($this->parser, "startElement", "endElement");
xml_set_character_data_handler ( $this->parser, "dataElement");
if($XML_TEXT=="")
{
die("XML TEXT is empty!");
}
$POS=0;
$LEN=strlen($XML_TEXT);
while ($data = substr($XML_TEXT,$POS, 4096)) {
$data=str_replace("\0","/0",$data);
$data=str_replace("&","&",$data);
$cdata=xml_parse($this->parser, $data, 0);
if (!$cdata) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->parser)),
xml_get_current_line_number($this->parser)));
}
$POS+=4096;
if($POS>=$LEN)
break;
}
xml_parser_free($this->parser);
if($mq){
set_magic_quotes_runtime (1);
}
return $this->displayTree();
} // end makeTree()
--
Edit bug report at http://bugs.php.net/?id=31291&edit=1
--
Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=31291&r=trysnapshot4
Try a CVS snapshot (php5.0):
http://bugs.php.net/fix.php?id=31291&r=trysnapshot50
Try a CVS snapshot (php5.1):
http://bugs.php.net/fix.php?id=31291&r=trysnapshot51
Fixed in CVS: http://bugs.php.net/fix.php?id=31291&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=31291&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=31291&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=31291&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=31291&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=31291&r=support
Expected behavior: http://bugs.php.net/fix.php?id=31291&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=31291&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=31291&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=31291&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=31291&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=31291&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=31291&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=31291&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=31291&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=31291&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=31291&r=mysqlcfg