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

 ID:               51837
 Updated by:       m...@php.net
 Reported by:      cvb724 at yahoo dot ca
 Summary:          XMLReader cannot store values in arrays
-Status:           Open
+Status:           Feedback
 Type:             Bug
 Package:          *General Issues
 Operating System: CentOS 5
 PHP Version:      5.3.2

 New Comment:

Works fine here:



$ php -r '$r=new XMLReader();
$r->open("http://www.w3.org/TR/xmldsig-core/signature-example-rsa.xml";);
while($r->read()){ if($r->nodeType==XMLReader::TEXT) $var[] =
$r->value;} print_r($var);'

Array

(

    [0] => 60NvZvtdTB+7UnlLp/H24p7h4bs=

    [1] => 

    juS5RhJ884qoFR8flVXd/rbrSDVGn40CapgB7qeQiT+rr0NekEQ6BHhUA8dT3+BC

    TBUQI0dBjlml9lwzENXvS83zRECjzXbMRTUtVZiPZG2pqKPnL2YU3A9645UCjTXU

    +jgFumv7k78hieAGDzNci+PQ9KRmm//icT7JaYztgt4=

  

    [2] => 

         
uCiukpgOaOmrq1fPUTH3CAXxuFmPjsmS4jnTKxrv0w1JKcXtJ2M3akaV1d/karvJ

         
lmeao20jNy9r+/vKwibjM77F+3bIkeMEGmAIUnFciJkR+ihO7b4cTuYnEi8xHtu4

          iMn6GODBoEzqFQYdd8p4vrZBsvs44nTrS8qyyhba648=

        

    [3] => 

          AQAB

        

    [4] => 

        CN=Merlin Hughes,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE

      

    [5] => 

          CN=Test RSA CA,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE

        

    [6] => 970849928

    [7] => 

       
MIICeDCCAeGgAwIBAgIEOd3+iDANBgkqhkiG9w0BAQQFADBbMQswCQYDVQQGEwJJ

       
RTEPMA0GA1UECBMGRHVibGluMSUwIwYDVQQKExxCYWx0aW1vcmUgVGVjaG5vbG9n

       
aWVzLCBMdGQuMRQwEgYDVQQDEwtUZXN0IFJTQSBDQTAeFw0wMDEwMDYxNjMyMDda

       
Fw0wMTEwMDYxNjMyMDRaMF0xCzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZEdWJsaW4x

       
JTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9sb2dpZXMsIEx0ZC4xFjAUBgNVBAMT

       
DU1lcmxpbiBIdWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALgorpKY

       
Dmjpq6tXz1Ex9wgF8bhZj47JkuI50ysa79MNSSnF7SdjN2pGldXf5Gq7yZZnmqNt

       
Izcva/v7ysIm4zO+xft2yJHjBBpgCFJxXIiZEfooTu2+HE7mJxIvMR7buIjJ+hjg

       
waBM6hUGHXfKeL62QbL7OOJ060vKssoW2uuPAgMBAAGjRzBFMB4GA1UdEQQXMBWB

       
E21lcmxpbkBiYWx0aW1vcmUuaWUwDgYDVR0PAQH/BAQDAgeAMBMGA1UdIwQMMAqA

       
CEngrZIVgu03MA0GCSqGSIb3DQEBBAUAA4GBAHJu4JVq/WnXK2oqqfLWqes5vHOt

       
fX/ZhCjFyDMhzslI8am62gZedwZ9IIZIwlNRMvEDQB2zds/eEBnIAQPl/yRLCLOf

       
ZnbA8PXrbFP5igs3qQWScBUjZVjik748HU2sUVZOa90c0mJl2vJs/RwyLW7/uCAf

        C/I/k9xGr7fneoIW

      

)


Previous Comments:
------------------------------------------------------------------------
[2010-05-17 10:14:45] cvb724 at yahoo dot ca

Description:
------------
I have tried every way possible to store the values from an XML sheet
using XMLReader in an array. The XML sheet is valid. I have tried this
on two systems now, both with the same problem. Colleagues cannot find
anything wrong either. Example code is below:



CODE:



$reader = new XMLReader();

$url = 'http://xml.com/info.php'; // not a real URL

        

$reader->open($url);

        

$i = 0;

$j = 0;

        

while ($reader->read())

{

        if ($reader->nodeType == XMLReader::ELEMENT)

        {

                $attr[$i] = $reader->getAttribute("name"); // does not store 
anything

                $attr .= $reader->getAttribute("name"); // stores
perfectly

                i++;

        }

        if ($reader->nodeType == XMLReader::TEXT)

        {

                $val[$j] = $reader->value; // performs the same as above

                $val .= $reader->value;

                $j++;

        }

}

Test script:
---------------
$reader = new XMLReader();

$url = 'http://xml.com/info.php'; // insert a real URL to test

        

$reader->open($url);

        

$i = 0;

        

while ($reader->read())

{       

        if ($reader->nodeType == XMLReader::TEXT)

        {

                $val[$i] = $reader->value; // does not work

                //$val .= $reader->value; // for demonstration only, works 
properly

                $i++;

        }

}



print_r($val);

Expected result:
----------------
When using a valid URL and XML sheet, "print_r" should print an array of
all values stored.

Actual result:
--------------
Instead, the entire array is empty. As soon as you use .= instead of
storing in an array, everything is printed fine simply using "echo".


------------------------------------------------------------------------



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

Reply via email to