024.phpt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. --TEST--
  2. SimpleXML: XPath and attributes
  3. --EXTENSIONS--
  4. simplexml
  5. --FILE--
  6. <?php
  7. $xml =<<<EOF
  8. <?xml version='1.0'?>
  9. <root>
  10. <elem attr1='11' attr2='12' attr3='13'/>
  11. <elem attr1='21' attr2='22' attr3='23'/>
  12. <elem attr1='31' attr2='32' attr3='33'/>
  13. </root>
  14. EOF;
  15. $sxe = simplexml_load_string($xml);
  16. function test($xpath)
  17. {
  18. global $sxe;
  19. echo "===$xpath===\n";
  20. var_dump($sxe->xpath($xpath));
  21. }
  22. test('elem/@attr2');
  23. test('//@attr2');
  24. test('//@*');
  25. test('elem[2]/@attr2');
  26. ?>
  27. --EXPECTF--
  28. ===elem/@attr2===
  29. array(3) {
  30. [0]=>
  31. object(SimpleXMLElement)#%d (1) {
  32. ["@attributes"]=>
  33. array(1) {
  34. ["attr2"]=>
  35. string(2) "12"
  36. }
  37. }
  38. [1]=>
  39. object(SimpleXMLElement)#%d (1) {
  40. ["@attributes"]=>
  41. array(1) {
  42. ["attr2"]=>
  43. string(2) "22"
  44. }
  45. }
  46. [2]=>
  47. object(SimpleXMLElement)#%d (1) {
  48. ["@attributes"]=>
  49. array(1) {
  50. ["attr2"]=>
  51. string(2) "32"
  52. }
  53. }
  54. }
  55. ===//@attr2===
  56. array(3) {
  57. [0]=>
  58. object(SimpleXMLElement)#%d (1) {
  59. ["@attributes"]=>
  60. array(1) {
  61. ["attr2"]=>
  62. string(2) "12"
  63. }
  64. }
  65. [1]=>
  66. object(SimpleXMLElement)#%d (1) {
  67. ["@attributes"]=>
  68. array(1) {
  69. ["attr2"]=>
  70. string(2) "22"
  71. }
  72. }
  73. [2]=>
  74. object(SimpleXMLElement)#%d (1) {
  75. ["@attributes"]=>
  76. array(1) {
  77. ["attr2"]=>
  78. string(2) "32"
  79. }
  80. }
  81. }
  82. ===//@*===
  83. array(9) {
  84. [0]=>
  85. object(SimpleXMLElement)#%d (1) {
  86. ["@attributes"]=>
  87. array(1) {
  88. ["attr1"]=>
  89. string(2) "11"
  90. }
  91. }
  92. [1]=>
  93. object(SimpleXMLElement)#%d (1) {
  94. ["@attributes"]=>
  95. array(1) {
  96. ["attr2"]=>
  97. string(2) "12"
  98. }
  99. }
  100. [2]=>
  101. object(SimpleXMLElement)#%d (1) {
  102. ["@attributes"]=>
  103. array(1) {
  104. ["attr3"]=>
  105. string(2) "13"
  106. }
  107. }
  108. [3]=>
  109. object(SimpleXMLElement)#%d (1) {
  110. ["@attributes"]=>
  111. array(1) {
  112. ["attr1"]=>
  113. string(2) "21"
  114. }
  115. }
  116. [4]=>
  117. object(SimpleXMLElement)#%d (1) {
  118. ["@attributes"]=>
  119. array(1) {
  120. ["attr2"]=>
  121. string(2) "22"
  122. }
  123. }
  124. [5]=>
  125. object(SimpleXMLElement)#%d (1) {
  126. ["@attributes"]=>
  127. array(1) {
  128. ["attr3"]=>
  129. string(2) "23"
  130. }
  131. }
  132. [6]=>
  133. object(SimpleXMLElement)#%d (1) {
  134. ["@attributes"]=>
  135. array(1) {
  136. ["attr1"]=>
  137. string(2) "31"
  138. }
  139. }
  140. [7]=>
  141. object(SimpleXMLElement)#%d (1) {
  142. ["@attributes"]=>
  143. array(1) {
  144. ["attr2"]=>
  145. string(2) "32"
  146. }
  147. }
  148. [8]=>
  149. object(SimpleXMLElement)#%d (1) {
  150. ["@attributes"]=>
  151. array(1) {
  152. ["attr3"]=>
  153. string(2) "33"
  154. }
  155. }
  156. }
  157. ===elem[2]/@attr2===
  158. array(1) {
  159. [0]=>
  160. object(SimpleXMLElement)#%d (1) {
  161. ["@attributes"]=>
  162. array(1) {
  163. ["attr2"]=>
  164. string(2) "22"
  165. }
  166. }
  167. }