017.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. --TEST--
  2. SimpleXML: iteration through subnodes
  3. --EXTENSIONS--
  4. simplexml
  5. --FILE--
  6. <?php
  7. $xml =<<<EOF
  8. <people>
  9. <person name="Joe">
  10. <child name="Ann" />
  11. <child name="Marray" />
  12. </person>
  13. <person name="Boe">
  14. <child name="Joe" />
  15. <child name="Ann" />
  16. </person>
  17. </people>
  18. EOF;
  19. $xml1 =<<<EOF
  20. <people>
  21. <person name="Joe">
  22. <child name="Ann" />
  23. </person>
  24. </people>
  25. EOF;
  26. function print_xml($xml) {
  27. foreach($xml->children() as $person) {
  28. echo "person: ".$person['name']."\n";
  29. foreach($person->children() as $child) {
  30. echo " child: ".$child['name']."\n";
  31. }
  32. }
  33. }
  34. function print_xml2($xml) {
  35. for ($i=0;$i<count($xml->person);$i++) {
  36. $person = $xml->person[$i];
  37. echo "person: ".$person['name']."\n";
  38. for ($j=0;$j<count($person->child);$j++) {
  39. echo " child: ".$person->child[$j]['name']."\n";
  40. }
  41. }
  42. }
  43. echo "---11---\n";
  44. print_xml(simplexml_load_string($xml));
  45. echo "---12---\n";
  46. print_xml(simplexml_load_string($xml1));
  47. echo "---21---\n";
  48. print_xml2(simplexml_load_string($xml));
  49. echo "---22---\n";
  50. print_xml2(simplexml_load_string($xml1));
  51. ?>
  52. --EXPECT--
  53. ---11---
  54. person: Joe
  55. child: Ann
  56. child: Marray
  57. person: Boe
  58. child: Joe
  59. child: Ann
  60. ---12---
  61. person: Joe
  62. child: Ann
  63. ---21---
  64. person: Joe
  65. child: Ann
  66. child: Marray
  67. person: Boe
  68. child: Joe
  69. child: Ann
  70. ---22---
  71. person: Joe
  72. child: Ann