003.phpt 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. --TEST--
  2. XMLReader: libxml2 XML Reader, attributes test
  3. --EXTENSIONS--
  4. xmlreader
  5. --FILE--
  6. <?php
  7. $filename = __DIR__ . '/_003.xml';
  8. $xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
  9. <books><book num="1" idx="2">book1</book></books>';
  10. file_put_contents($filename, $xmlstring);
  11. $reader = new XMLReader();
  12. if (!$reader->open($filename)) {
  13. exit();
  14. }
  15. // Only go through
  16. while ($reader->read()) {
  17. if ($reader->nodeType != XMLREADER::END_ELEMENT) {
  18. if ($reader->nodeType == XMLREADER::ELEMENT && $reader->hasAttributes) {
  19. $attr = $reader->moveToFirstAttribute();
  20. echo $reader->name . ": ";
  21. echo $reader->value . "\n";
  22. if ($reader->getAttribute($reader->name) == $reader->value) {
  23. echo "1st attr (num) failed\n";
  24. }
  25. $attr = $reader->moveToNextAttribute();
  26. echo $reader->name . ": ";
  27. echo $reader->value . "\n";
  28. if ($reader->getAttribute($reader->name) == $reader->value) {
  29. echo "2nd attr (idx) failed\n";
  30. }
  31. // Named attribute
  32. $attr = $reader->moveToAttribute('num');
  33. echo $reader->name . ": ";
  34. echo $reader->value . "\n";
  35. if ($reader->getAttribute('num') == $reader->value) {
  36. echo "attr num failed\n";
  37. }
  38. $attr = $reader->moveToAttribute('idx');
  39. echo $reader->name . ": ";
  40. echo $reader->value . "\n";
  41. if ($reader->getAttribute('idx') == $reader->value) {
  42. echo "attr idx failed\n";
  43. }
  44. // Numeric positions of attributes
  45. $attr = $reader->moveToAttributeNo(0);
  46. echo $reader->name . ": ";
  47. echo $reader->value . "\n";
  48. if ($reader->getAttributeNo(0) == $reader->value) {
  49. echo "attr 0 failed\n";
  50. }
  51. $attr = $reader->moveToAttributeNo(1);
  52. echo $reader->name . ": ";
  53. echo $reader->value . "\n";
  54. var_dump($reader->moveToAttributeNo(20));
  55. var_dump($reader->moveToAttribute('missing-attribute'));
  56. try {
  57. $reader->moveToAttribute('');
  58. } catch (ValueError $exception) {
  59. echo $exception->getMessage() . "\n";
  60. }
  61. }
  62. }
  63. }
  64. $reader->close();
  65. unlink($filename);
  66. ?>
  67. --EXPECT--
  68. num: 1
  69. idx: 2
  70. num: 1
  71. idx: 2
  72. num: 1
  73. idx: 2
  74. bool(false)
  75. bool(false)
  76. XMLReader::moveToAttribute(): Argument #1 ($name) cannot be empty