PHP按索引获取xml节点

时间:2013-09-01 11:06:59

标签: php xml xpath xml-parsing

如何循环任何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个相同的函数来读取它们,这些函数从XML中提取信息并通过保存.php数据文件存储为变量。其中一个例子:

$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个功能变得混乱。

1 个答案:

答案 0 :(得分:0)

这是我通常用于将数组转换为xml或xml转换为数组的代码。

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

您可以使用相同的class或只在脚本中复制此toArray函数。

创建array后,您可以使用php serialize() serialize函数将结果写为fwrite()