ID: 26188 User updated by: sergey at bds dot ru Reported By: sergey at bds dot ru Status: Bogus Bug Type: XML related Operating System: Windows PHP Version: 4.3.2 New Comment:
Ok, I have got what you mean. 1) I don't really know standart round the cdata section, but MSXML appears to handle such a sections as a nodes... so the structure <Root> <![CDATA[ function fnShow() { } ]]> </Root> will produce Root [XMLElement] (Node that has a child) CDATA [CDATA Section] (Node of the type CDATA) 2) How can you think the operation of parsing/serializing XML should not be the same? If we'll parse with xml_parse_into_structure xml listed below, we will not know after the parsing that it was really CDATA section! So we can not restore xml! This is not right by my opininon. 3) I am writing an wrapper for xml_parse..., a module like you have under the name DOMXML functions. So i really was surprized about the situation after i laid 5 days out for writing an MSXML-like interface... And it is a problem... don't know what to do next... Previous Comments: ------------------------------------------------------------------------ [2003-11-10 06:36:54] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php The CDATA section and the ordinary text node are no different semantically... How come you think the CDATA section should be represented as a separate node... ------------------------------------------------------------------------ [2003-11-10 03:04:20] sergey at bds dot ru In a "Expected result" section the second array with the supposed CDATA Section should have value of the "tag" attribute "#cdata-section" ------------------------------------------------------------------------ [2003-11-10 02:57:14] sergey at bds dot ru Description: ------------ When parse_xml_into_structure parses an xml, it seems for me that it skips the CDATA section. Parser assumes the CDATA node as an usual value of its node. But, it should be actually parsed into a new child node - CDATA section Reproduce code: --------------- test.xml: <?xml version="1.0" encoding="UTF-8" ?> <PlaceHolderList> <![CDATA[ function fnShow() { } ]]> </PlaceHolderList> test.php $strXml = implode("", file("test.xml")); $objParser = xml_parser_create(); xml_parser_set_option($objParser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($objParser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($objParser, $strXml, $arrParserValues, $arrParserIndexes); print_r($arrParserValues); Expected result: ---------------- Array ( [0] => Array ( [tag] => PlaceHolderList [type] => complete [level] => 1 [value] => [1] => Array ( [tag] => PlaceHolderList [type] => cdata [level] => 2 [value] => function fnShow(){ var aAll = document.all; var e = new Enumerator(aAll); while (!e.atEnd()) {> alert (e.item()); e.moveNext(); }} ) ) Actual result: -------------- Array ( [0] => Array ( [tag] => PlaceHolderList [type] => complete [level] => 1 [value] => function fnShow(){ var aAll = document.all; var e = new Enumerator(aAll); while (!e.atEnd()) {> alert (e.item()); e.moveNext(); }} ) ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=26188&edit=1