#34664 [Bgs]: DOMDocument::saveXML() result cannot be loaded using loadXML()

2005-09-29 Thread rrichards
 ID:   34664
 Updated by:   [EMAIL PROTECTED]
 Reported By:  bugs dot php dot net at webdevelopers dot cz
 Status:   Bogus
 Bug Type: DOM XML related
 Operating System: Linux version 2.6.6
 PHP Version:  5.0.5
 New Comment:

The name is just confusing you. saveXML doesn't magically produce
well-formed XML from non XML data (i.e. HTML). It just enforces the
output is well-formed otherwise issue an error. If you dont know the
type of document then check the DOMDocument type:
XML_DOCUMENT_NODE - XML data
XML_HTML_DOCUMENT_NODE - HTML data
and use the correct Save method. The only way to saveXML() can be
safely used with HTML is if the HTML is really XHTML (which could be
loaded with loadXML() otherwise results will vary.


Previous Comments:


[2005-09-29 13:14:20] bugs dot php dot net at webdevelopers dot cz

The bug is that I have a DOM document that was imported from HTML
(actually I'm having the object that handles the DOM and I may not be
aware of the way how it was created...).

When I have valid DOM document then I expect (or I thought that I can
expect) that I'll produce valid XML using the method $d->saveXML() and
the result can be loaded again without problem with loadXML()... This
is not the true.

Following function may fail under certain circumstances when the
DOMDocument was created using loadHTML():

function test(DOMDocument $d) {
  echo DOMDocument::loadXML($d->saveXML());
}

I'm not usre if it is not confusing if the programmer cannot be sure
that the saveXML() is not compatible with loadXML()...

---

Yesterday when I was playing with loadHTML() and then using the
saveXML() it even resulted in XML like this
...
- it has duplicite attribute @xmlns which is not a XML so saveXML() is
more saveSometimesXML(). Obviosly when importing the HTML then the
@xmlns is treated as common attribute and on saving there is added
namespace declaration alongside @xmlns with existing @xmlns attribute.

It looks like saveXML() is not producing XML despite the name of the
function. I think it is a bug. Don't you think? Or is it meant
functionality and just the function's name is confusing me?



[2005-09-28 23:02:32] [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

HTML is not XML (hence the different I/O methods) so you cant expect
things to always be fixed when trying to do a conversion like that.



[2005-09-28 05:28:03] [EMAIL PROTECTED]

What exactly is the bug here?  You can't have -- in an HTML/XML comment
and the warning message is telling you exactly that.  Remove the a-- and
it works just fine.



[2005-09-27 22:02:17] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.0-win32-latest.zip





[2005-09-27 21:43:21] bugs dot php dot net at webdevelopers dot cz

Sorry for the incorrect bug's name:
"invalid feof() results due to Zend's caching of user stream wrappers"

My browser's autocompletion prefilled it and I didn't noticed it... ;-)



The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/34664

-- 
Edit this bug report at http://bugs.php.net/?id=34664&edit=1


#34664 [Bgs]: DOMDocument::saveXML() result cannot be loaded using loadXML()

2005-09-29 Thread bugs dot php dot net at webdevelopers dot cz
 ID:   34664
 User updated by:  bugs dot php dot net at webdevelopers dot cz
 Reported By:  bugs dot php dot net at webdevelopers dot cz
 Status:   Bogus
 Bug Type: DOM XML related
 Operating System: Linux version 2.6.6
 PHP Version:  5.0.5
 New Comment:

The bug is that I have a DOM document that was imported from HTML
(actually I'm having the object that handles the DOM and I may not be
aware of the way how it was created...).

When I have valid DOM document then I expect (or I thought that I can
expect) that I'll produce valid XML using the method $d->saveXML() and
the result can be loaded again without problem with loadXML()... This
is not the true.

Following function may fail under certain circumstances when the
DOMDocument was created using loadHTML():

function test(DOMDocument $d) {
  echo DOMDocument::loadXML($d->saveXML());
}

I'm not usre if it is not confusing if the programmer cannot be sure
that the saveXML() is not compatible with loadXML()...

---

Yesterday when I was playing with loadHTML() and then using the
saveXML() it even resulted in XML like this
...
- it has duplicite attribute @xmlns which is not a XML so saveXML() is
more saveSometimesXML(). Obviosly when importing the HTML then the
@xmlns is treated as common attribute and on saving there is added
namespace declaration alongside @xmlns with existing @xmlns attribute.

It looks like saveXML() is not producing XML despite the name of the
function. I think it is a bug. Don't you think? Or is it meant
functionality and just the function's name is confusing me?


Previous Comments:


[2005-09-28 23:02:32] [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

HTML is not XML (hence the different I/O methods) so you cant expect
things to always be fixed when trying to do a conversion like that.



[2005-09-28 05:28:03] [EMAIL PROTECTED]

What exactly is the bug here?  You can't have -- in an HTML/XML comment
and the warning message is telling you exactly that.  Remove the a-- and
it works just fine.



[2005-09-27 22:02:17] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.0-win32-latest.zip





[2005-09-27 21:43:21] bugs dot php dot net at webdevelopers dot cz

Sorry for the incorrect bug's name:
"invalid feof() results due to Zend's caching of user stream wrappers"

My browser's autocompletion prefilled it and I didn't noticed it... ;-)



[2005-09-27 21:38:32] bugs dot php dot net at webdevelopers dot cz

Description:

HTML imported using DOMDocument::loadHTML() is not saved as valid XML
using DOMDocument::saveXML()

Reproduce code:
---
header('Content-Type: text/plain; charset=UTF-8');

$d=new DOMDocument('1.0', 'UTF-8');
if ($d->loadHTML('')) {
  echo "loadHTML: OK\n";
  echo $d->loadXML($d->saveXML());
}

Expected result:

loadHTML: OK
1


Actual result:
--
loadHTML: OK

Warning:  DOMDocument::loadXML() [function.loadXML]: Comment not terminated