ID: 42139 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Assigned +Status: Closed Bug Type: XML Reader Operating System: MacOS/Darwin 10.4.10/8.10.1 PHP Version: 5CVS-2007-07-29 (CVS) Assigned To: rrichards New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. libxml2-2.6.28+ is required . It accepts the LIBXML_ constants just as the open() method does: $reader->XML( $xml, NULL, LIBXML_NOENT ); the XMLReader properties are used with the set/getParserProperty() methods. Docs will be updated Previous Comments: ------------------------------------------------------------------------ [2007-07-30 12:44:57] [EMAIL PROTECTED] They are options - properties method was old name/method in libxml2 (see Table 338. XMLReader Parser Options - in XMLReader docs), though it needs to be implemented for that method. Assign to self ------------------------------------------------------------------------ [2007-07-29 12:53:05] [EMAIL PROTECTED] Description: ------------ The XMLReader constants for parser options (LOADDTD, SUBST_ENTITIES, etc.) don't work when passed as the third parameter to XMLReader::open() or XMLReader::XML(). Their values are incorrect for the xmlreader API; they're parser property names, not option bitmasks. The XML() method also ignores the options parameter completely. This is partially a documentation problem, but also involves broken functionality in the xmlreader extension. Suggested fix is to either: - remove the options parameters completely from both methods and their documentation - fix the XML() method to read the options and document both functions as using the LIBXML_* constants (fix the docs to match the code), or - modify both XML() and open() to interpret the options passed as properties (fix the code to match the docs) Reproduce code: --------------- <?php $xml = <<<XML <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE root [ <!ELEMENT root ANY> <!ENTITY x "y"> ]> <root>&x;</root> XML; $reader = new XMLReader; $reader->XML( $xml, NULL, XMLReader::SUBST_ENTITIES ); // or: $reader->XML( $xml, NULL, LIBXML_NOENT ); while ( $reader->read() ) echo "{$reader->nodeType}, {$reader->name}, {$reader->value}\n"; $reader->close(); ?> Expected result: ---------------- 10, root, 1, root, 3, #text, y 15, root, Actual result: -------------- 10, root, 1, root, 5, x, 15, root, ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=42139&edit=1