使用DOM、PHP处理xml时出现奇怪的问题
我想处理如下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&
<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)
,以启用所有错误