Re: LoadXML trouble

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Dec 10, 2007 12:08 PM, Dani Castaños <danitao.mailists@xxxxxxxxx> wrote:

> Yep, it works when i do saveXML, but not on loadXML step...


did the loadXML() method work in the test script i sent over in my last
post?
if it does then something else is going on when loadXML() is called in the
context
of your application.

The thing is... i'm trying to do something like this:
>
> $request = $_POST['xml'];
> $logger->debug( 'New ticket request' );
>
> /**
>  * Parse XML request to obtain values
>  */
> $xml = new DOMDocument();
> //$xml->validateOnParse = true;
> $xml->loadXML( $request );


you should always sanitize input.  at the very least you should be running
$_POST['xml']
through a call to trim() before handing it to the DOMDocument  instance.

$request = trim($_POST['xml']);
$xml = new DOMDocument();
$xml->loadXML($request);

i suspect there is some garbage in or around the string contained in
$_POST['xml'] that
the DomDocument instance doesnt like, therefore its not behaving the way
youd anticipate.
for example if you modify the script i sent over last time by putting some
spaces in between the
xml declaration and the opening tag of the envelope (<response>) you should
see the following error
(or something similar [depending on the value of error_reporting])

Warning: DOMDocument::loadXML(): XML declaration allowed only at the start
of the document in Entity,
line: 3 in /home/nathan/testDom.php on line 19

which consequently leads to
<?xml version="1.0"?>

when invoking
echo $domDoc->saveXML() . PHP_EOL;
rather than
<?xml version="1.0"?>
<response>
 <ticketID>1197026188_ec76</ticketID>
 <status>KO</status>
 <errCode>500</errCode>
 <errMsg>Internal Server Error</errMsg>
</response>

which is what you would expect.
-nathan

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux