如何从php数组中删除SimpleXMLElement对象
我已经使用simplexml_load_file
php函数读取了XML文件。
XML
<data>
<request>
<type>City</type>
<query>Anand, India</query>
</request>
<current_condition>
<observation_time>08:55 AM</observation_time>
<temp_C>28</temp_C>
<temp_F>82</temp_F>
<weatherCode>113</weatherCode>
<weatherDesc>Sunny</weatherDesc>
<windspeedMiles>9</windspeedMiles>
<windspeedKmph>14</windspeedKmph>
<winddirDegree>63</winddirDegree>
<winddir16Point>ENE</winddir16Point>
<precipMM>0.0</precipMM>
<humidity>23</humidity>
<visibility>10</visibility>
<pressure>1014</pressure>
<cloudcover>0</cloudcover>
</current_condition>
<weather>
<date>2012-12-22</date>
<tempMaxC>33</tempMaxC>
<tempMaxF>91</tempMaxF>
<tempMinC>18</tempMinC>
<tempMinF>64</tempMinF>
<windspeedMiles>11</windspeedMiles>
<windspeedKmph>17</windspeedKmph>
<winddirection>ENE</winddirection>
<winddir16Point>ENE</winddir16Point>
<winddirDegree>63</winddirDegree>
<weatherCode>113</weatherCode>
<weatherDesc>Sunny</weatherDesc>
<precipMM>0.0</precipMM>
</weather>
<weather>
<date>2012-12-23</date>
<tempMaxC>34</tempMaxC>
<tempMaxF>92</tempMaxF>
<tempMinC>18</tempMinC>
<tempMinF>65</tempMinF>
<windspeedMiles>9</windspeedMiles>
<windspeedKmph>15</windspeedKmph>
<winddirection>ENE</winddirection>
<winddir16Point>ENE</winddir16Point>
<winddirDegree>64</winddirDegree>
<weatherCode>113</weatherCode>
<weatherDesc>Sunny</weatherDesc>
<precipMM>0.0</precipMM>
</weather>
<weather>
<date>2012-12-24</date>
<tempMaxC>33</tempMaxC>
<tempMaxF>92</tempMaxF>
<tempMinC>18</tempMinC>
<tempMinF>64</tempMinF>
<windspeedMiles>9</windspeedMiles>
<windspeedKmph>14</windspeedKmph>
<winddirection>NE</winddirection>
<winddir16Point>NE</winddir16Point>
<winddirDegree>45</winddirDegree>
<weatherCode>113</weatherCode>
<weatherDesc>Sunny</weatherDesc>
<precipMM>0.0</precipMM>
</weather>
</data>
PHP:
$child=$xml->children();
foreach($xml->children() as $child)
{
foreach($child->children() as $child_t)
{
$weather_arr[$child_t->getName()]=$child_t;
echo $child_t->getName() . ": " . $child_t . "<br />";
}
}
echo "<pre>".html_entity_decode(print_r($weather_arr,true))."</pre>";
解决方案
我已使用以下代码解决了问题。
function simplexml_to_array($xmlobj) {
$a = array();
foreach ($xmlobj->children() as $node) {
if (is_array($node))
$a[$node->getName()] = simplexml_to_array($node);
else
$a[$node->getName()] = (string) $node;
}
return $a;
}
foreach($xml->children() as $child)
{
$arr=simplexml_to_array($child );
echo "<pre>".html_entity_decode(print_r($arr,true))."</pre>";
}
相关文章