018.phpt 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. --TEST--
  2. SimpleXML: iteration through subnodes and attributes
  3. --EXTENSIONS--
  4. simplexml
  5. --FILE--
  6. <?php
  7. $xml =<<<EOF
  8. <people>
  9. <person name="Joe">
  10. Text1
  11. <child name="Ann" />
  12. Text2
  13. <child name="Marray" />
  14. Text3
  15. </person>
  16. <person name="Boe">
  17. <child name="Joe" />
  18. <child name="Ann" />
  19. </person>
  20. </people>
  21. EOF;
  22. $xml1 =<<<EOF
  23. <people>
  24. <person name="Joe">
  25. <child />
  26. </person>
  27. </people>
  28. EOF;
  29. function traverse_xml($pad,$xml) {
  30. foreach($xml->children() as $name => $node) {
  31. echo $pad."<$name";
  32. foreach($node->attributes() as $attr => $value) {
  33. echo " $attr=\"$value\"";
  34. }
  35. echo ">\n";
  36. traverse_xml($pad." ",$node);
  37. echo $pad."</$name>\n";
  38. }
  39. }
  40. traverse_xml("",simplexml_load_string($xml));
  41. echo "----------\n";
  42. traverse_xml("",simplexml_load_string($xml1));
  43. echo "---Done---\n";
  44. ?>
  45. --EXPECT--
  46. <person name="Joe">
  47. <child name="Ann">
  48. </child>
  49. <child name="Marray">
  50. </child>
  51. </person>
  52. <person name="Boe">
  53. <child name="Joe">
  54. </child>
  55. <child name="Ann">
  56. </child>
  57. </person>
  58. ----------
  59. <person name="Joe">
  60. <child>
  61. </child>
  62. </person>
  63. ---Done---