Php SimpleXML-数组似乎缺少某些属性

Php SimpleXML-数组似乎缺少某些属性,php,xml,simplexml,Php,Xml,Simplexml,我正在使用SimpleXML解析来自web服务的XML数据。到目前为止,一切都进展顺利,但我现在发现自己被难住了。我发现SimpleXML生成的数组似乎缺少一些属性。我希望我犯了一个简单的错误,我真的很感激你的意见 示例XML数据: <XYZ data-livestyle-extension="available"> <year selected="2016"> <make selected="Alfa Romeo"> <model sele

我正在使用SimpleXML解析来自web服务的XML数据。到目前为止,一切都进展顺利,但我现在发现自己被难住了。我发现SimpleXML生成的数组似乎缺少一些属性。我希望我犯了一个简单的错误,我真的很感激你的意见

示例XML数据:

<XYZ data-livestyle-extension="available">
 <year selected="2016">
  <make selected="Alfa Romeo">
   <model selected="4C">
    <submodel vehiclecd="20180">Base</submodel>
    <submodel vehiclecd="20181">Launch Edition</submodel>
    <submodel vehiclecd="20182">Track Package</submodel>
   </model>
  </make>
 </year>
</XYZ>
var_转储的结果:

object(SimpleXMLElement)#4 (1) {                                                                                                                                                                                                 
  ["@attributes"]=>                                                                                                                                                                                                              
  array(1) {                                                                                                                                                                                                                     
    ["vehiclecd"]=>                                                                                                                                                                                                              
    string(5) "20180"                                                                                                                                                                                                            
  }                                                                                                                                                                                                                              
}                                                                                                                                                                                                                                
object(SimpleXMLElement)#7 (1) {                                                                                                                                                                                                 
  ["@attributes"]=>                                                                                                                                                                                                              
  array(1) {                                                                                                                                                                                                                     
    ["vehiclecd"]=>                                                                                                                                                                                                              
    string(5) "20181"                                                                                                                                                                                                            
  }                                                                                                                                                                                                                              
}                                                                                                                                                                                                                                
object(SimpleXMLElement)#4 (2) {                                                                                                                                                                                                 
  ["@attributes"]=>                                                                                                                                                                                                              
  array(1) {                                                                                                                                                                                                                     
    ["vehiclecd"]=>                                                                                                                                                                                                              
    string(5) "20182"                                                                                                                                                                                                            
  }                                                                                                                                                                                                                              
  [0]=>                                                                                                                                                                                                                          
  string(13) "Track Package"                                                                                                                                                                                                     
}
我不知道为什么字符串“trackpackage”可以用于第三个实例,但是“launchedition”和“Base”字符串被排除在外。我基本上是从子模型节点的每个实例中获取两个值

  • 节点的值(例如:“Base”)
  • “vehiclecd”的价值

我真的希望自己解决这个问题,但一直无法做到。非常感谢您的指导

var_dump()
替换为
echo$submodel->asXML()会给你更多的细节。非常感谢你,@michi!一旦我这样做了,我就能看到一切都是我所期望的!我的代码一直都是正确的,但var_转储是误导性的。:-)是的。SimpleXML不生成数组;从
var\u dump
所期望的意义上讲,它甚至不是真正存在的对象。将其视为访问XML的一系列方法,您就不会对它似乎“包含”的内容感到惊讶了。将
var_dump()
替换为
echo$submodel->asXML()会给你更多的细节。非常感谢你,@michi!一旦我这样做了,我就能看到一切都是我所期望的!我的代码一直都是正确的,但var_转储是误导性的。:-)是的。SimpleXML不生成数组;从
var\u dump
所期望的意义上讲,它甚至不是真正存在的对象。将其视为访问XML的一组方法,您将不会对它似乎“包含”的内容感到惊讶。
object(SimpleXMLElement)#4 (1) {                                                                                                                                                                                                 
  ["@attributes"]=>                                                                                                                                                                                                              
  array(1) {                                                                                                                                                                                                                     
    ["vehiclecd"]=>                                                                                                                                                                                                              
    string(5) "20180"                                                                                                                                                                                                            
  }                                                                                                                                                                                                                              
}                                                                                                                                                                                                                                
object(SimpleXMLElement)#7 (1) {                                                                                                                                                                                                 
  ["@attributes"]=>                                                                                                                                                                                                              
  array(1) {                                                                                                                                                                                                                     
    ["vehiclecd"]=>                                                                                                                                                                                                              
    string(5) "20181"                                                                                                                                                                                                            
  }                                                                                                                                                                                                                              
}                                                                                                                                                                                                                                
object(SimpleXMLElement)#4 (2) {                                                                                                                                                                                                 
  ["@attributes"]=>                                                                                                                                                                                                              
  array(1) {                                                                                                                                                                                                                     
    ["vehiclecd"]=>                                                                                                                                                                                                              
    string(5) "20182"                                                                                                                                                                                                            
  }                                                                                                                                                                                                                              
  [0]=>                                                                                                                                                                                                                          
  string(13) "Track Package"                                                                                                                                                                                                     
}