使用PHP从XML文件中提取数据

时间:2014-07-09 11:33:24

标签: php xml

我有一个具有以下结构的XML文件:

<markers>
  <marker>
    <marker_id>...</marker_id>
    <map_id>...</map_id>
    <title>Test Location 1</title>
    <address>Blah Blah Blah</address>
    <desc/>
    <pic/>
    <icon>...</icon>
    <linkd/>
    <lat>...</lat>
    <lng>...</lng>
    <anim>...</anim>
    <category>...</category>
    <infoopen>...</infoopen>
  </marker>
</markers>

基本上它是从谷歌地图位置XML文件中提取数据。

我只需回应一下

这是我到目前为止所拥有的:

<?php
$url = 'myurl/1markers.xml';
$file = file_get_contents($url);
$xml = simplexml_load_string($file);

foreach($xml->markers as $x) {
   $location = $x->marker->title;
     echo $location;
   }
?>

它似乎没有回应......?

我可能没有在foreach的某个地方做到这一点,任何人都能看到我错过的东西吗?

由于

标记

3 个答案:

答案 0 :(得分:0)

标记是根标记。请参阅http://php.net/manual/en/simplexml.examples-basic.php,您的代码应如下所示:

foreach($xml->marker as $x) {
     echo $x->title;
   }

答案 1 :(得分:0)

替换file_get_contents可能很有用:http://www.php.net/manual/en/function.simplexml-load-file.php

<?php

$XML = <<<'XML'
<markers>
  <marker>
    <marker_id>...</marker_id>
    <map_id>...</map_id>
    <title>Test Location 1</title>
    <address>Blah Blah Blah</address>
    <desc/>
    <pic/>
    <icon>...</icon>
    <linkd/>
    <lat>...</lat>
    <lng>...</lng>
    <anim>...</anim>
    <category>...</category>
    <infoopen>...</infoopen>
  </marker>
</markers>
XML;

$xml = simplexml_load_string($XML);

//这似乎解决了问题,问题是您试图访问隐含的根标记。

foreach($xml->marker as $x) {
   $location = $x->title;
      var_dump($location);
   }

?>

答案 2 :(得分:0)

使用simplexml_load_file()

<?php
    $xml = simplexml_load_file("new.xml");
    foreach($xml as $x) {
       $location = $x->title;
          echo $location;
       }

    ?>