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