Bug #51837 [Opn->Fbk]: XMLReader cannot store values in arrays
Edit report at http://bugs.php.net/bug.php?id=51837&edit=1
ID: 51837
Updated by: mike@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
Thread (3 messages)