003.phpt 1.9 KB

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