2013-09-01 59 views
-1

如何通過任何XML文件循環以獲取節點及其值?PHP按索引獲取xml節點

我的鬥爭是:我有3個XML文件:

<namespace> 
    <node> 
    <value_a>A</value_a> 
    <value_b>B</value_b> 
    </node> 
</namespace> 

<global> 
    <country> 
    <code>UK</code> 
    </country> 
</global> 

<geoNames> 
    <country> 
    <countryCode>Australia</countryCode> 
    </country> 
</geoNames> 

而且我有3層相同的功能看,通過保存.PHP數據文件從XML並存儲爲變量提取信息的閱讀。他們中的一個示例:

$parsed_xml_content = ""; 

$xml = simplexml_load_file("http://" . $srvname . $dirpath . $file_xmlData); 

$obj = $xml->xpath("//geonames"); 

foreach ($obj[0]->country as $country) 
{ 
    $keys = (array_keys((array) $country)); 

    $i = 0; 
    $parsed_xml_content .= "\t\"" . $country->countryCode . "\" => Array(\n"; 
    foreach ($country as $val) 
    { 
     $parsed_xml_content .= "\t\t\"$keys[$i]\" => \"$val\",\n"; 

     $i++; 
    } 
    $parsed_xml_content .= "\t),\n"; 
} 

$fo = fopen($locpath . $file_roots, "w"); 

fwrite($fo, "<?php \$isoGeoData = Array(\n" . $parsed_xml_content . "\n); ?>"); 

fclose($fo); 

如何重寫它不使用節點名$country->countryCode但指標?管理3個功能會變得混亂。

+0

結果正如我能理解你想創建一個XML格式的陣列? –

+0

這是正確的。 –

+0

您可能對以下php函數感興趣:http://php.net/var_export – hakre

回答

0

這是一個平常的代碼,我通常用於數組到xml或xml到數組。

php-array-to-xml or xml-to-array

您可以使用相同的class或只是在你的腳本複製此toArray功能。

創建array後,您可以使用PHP serialize()serialize功能編寫與fwrite()