ID: 26188
Updated by: [EMAIL PROTECTED]
Reported By: sergey at bds dot ru
Status: Bogus
Bug Type: XML related
Operating System: Windows
PHP Version: 4.3.2
New Comment:
Such operations are just irreversible because the behaviour is quite
dependent on the backend XML parsing implementation. Not a PHP
developer issue.
Previous Comments:
------------------------------------------------------------------------
[2003-11-10 07:03:58] sergey at bds dot ru
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...
------------------------------------------------------------------------
[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