Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用DOM、PHP处理xml时出现奇怪的问题_Php_Xml_Dom - Fatal编程技术网

使用DOM、PHP处理xml时出现奇怪的问题

使用DOM、PHP处理xml时出现奇怪的问题,php,xml,dom,Php,Xml,Dom,我想处理如下xml: <GeocodeResponse> <status>OK</status> <result> <type>street_address</type> <address_component> <long_name>Beijing</long_name> <short_name>Beijing</short_name&

我想处理如下xml:

<GeocodeResponse> 
 <status>OK</status> 
 <result> 
  <type>street_address</type> 
  <address_component> 
   <long_name>Beijing</long_name> 
   <short_name>Beijing</short_name> 
   <type>locality</type> 
   <type>political</type> 
  </address_component> 
  <address_component> 
   <long_name>Beijing</long_name> 
   <short_name>Beijing</short_name> 
   <type>administrative_area_level_1</type>
   <type>political</type> 
  </address_component>  
 </result> 
</GeocodeResponse>
  <address_component> 
   <long_name>Beijing</long_name> 
   <short_name>Beijing</short_name> 
   <type>administrative_area_level_1</type>
   <type>political</type> 
  </address_component> 
虽然它可以与以下代码配合使用:

        $doc = new DOMDocument();
        $doc->loadXML($contents);

        $addresses=$doc->getElementsByTagName("address_component");
        for($k=0;$k<$addresses->length;$k++){
        $type_elements = $addresses->item($k)->getElementsByTagName('type');

            //do work        
        } 
$doc=newDOMDocument();
$doc->loadXML($contents);
$addresses=$doc->getElementsByTagName(“地址组件”);
对于($k=0;$klength;$k++){
$type_elements=$addresses->item($k)->getElementsByTagName('type');
//工作
} 
我看不出这两种方法之间的区别,在第一个示例中,当我执行“foreach”时,我得到的$address是一个单独的元素,如下所示:

<GeocodeResponse> 
 <status>OK</status> 
 <result> 
  <type>street_address</type> 
  <address_component> 
   <long_name>Beijing</long_name> 
   <short_name>Beijing</short_name> 
   <type>locality</type> 
   <type>political</type> 
  </address_component> 
  <address_component> 
   <long_name>Beijing</long_name> 
   <short_name>Beijing</short_name> 
   <type>administrative_area_level_1</type>
   <type>political</type> 
  </address_component>  
 </result> 
</GeocodeResponse>
  <address_component> 
   <long_name>Beijing</long_name> 
   <short_name>Beijing</short_name> 
   <type>administrative_area_level_1</type>
   <type>political</type> 
  </address_component> 

北京
北京
行政区一级
政治的
对吧?

当然,它有$childnode,比如,等等


但是为什么我会得到空属性?

既然您想访问属性,那么它应该是
childNodes
,而不带
$

$nodes = $address->childNodes;
当您将
$
放在前面时,PHP将尝试将其作为一个变量进行评估

另一方面,您似乎禁用了
错误报告
或设置得太低,否则您可能会看到通知告诉您
注意:未定义变量:childNodes
。您应该在开发机器上设置
错误报告(-1)
,以启用所有错误