027.phpt 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. --TEST--
  2. SimpleXML: Adding an elements
  3. --EXTENSIONS--
  4. simplexml
  5. --FILE--
  6. <?php
  7. $xml =<<<EOF
  8. <people></people>
  9. EOF;
  10. function traverse_xml($xml, $pad = '')
  11. {
  12. $name = $xml->getName();
  13. echo "$pad<$name";
  14. foreach($xml->attributes() as $attr => $value)
  15. {
  16. echo " $attr=\"$value\"";
  17. }
  18. echo ">" . trim($xml) . "\n";
  19. foreach($xml->children() as $node)
  20. {
  21. traverse_xml($node, $pad.' ');
  22. }
  23. echo $pad."</$name>\n";
  24. }
  25. $people = simplexml_load_string($xml);
  26. traverse_xml($people);
  27. $people->person = 'Joe';
  28. $people->person['gender'] = 'male';
  29. traverse_xml($people);
  30. $people->person = 'Jane';
  31. traverse_xml($people);
  32. $people->person['gender'] = 'female';
  33. $people->person[1] = 'Joe';
  34. $people->person[1]['gender'] = 'male';
  35. traverse_xml($people);
  36. $people->person[3] = 'Minni-me';
  37. $people->person[2]['gender'] = 'male';
  38. traverse_xml($people);
  39. $people->person[3]['gender'] = 'error';
  40. traverse_xml($people);
  41. ?>
  42. --EXPECTF--
  43. <people>
  44. </people>
  45. <people>
  46. <person gender="male">Joe
  47. </person>
  48. </people>
  49. <people>
  50. <person gender="male">Jane
  51. </person>
  52. </people>
  53. <people>
  54. <person gender="female">Jane
  55. </person>
  56. <person gender="male">Joe
  57. </person>
  58. </people>
  59. Warning: main(): Cannot add element person number 3 when only 2 such elements exist in %s027.php on line %d
  60. <people>
  61. <person gender="female">Jane
  62. </person>
  63. <person gender="male">Joe
  64. </person>
  65. <person gender="male">Minni-me
  66. </person>
  67. </people>
  68. <people>
  69. <person gender="female">Jane
  70. </person>
  71. <person gender="male">Joe
  72. </person>
  73. <person gender="male">Minni-me
  74. </person>
  75. <person gender="error">
  76. </person>
  77. </people>