尝试通过PHP从xml文件中提取多个节点

时间:2012-02-20 04:30:12

标签: php xml simplexml

我的XML文件是:

<?xml version="1.0" encoding="UTF-8"?>
<item>
    <title>Hello</title>
    <link>http://www.google.com</link>
</item>
<item>
    <title>Some Title</title>
    <link>http://www.google.com</link>
</item>

我想从xml文件中获取此数组:

  0 => 
    array
      'title' => string 'Hello' (length=5)
      'link' => string 'http://www.google.com' (length=21)
  1 => 
    array
      'title' => string 'Some Title' (length=10)
      'link' => string 'http://www.google.com' (length=21)

有可能吗?如果是这样,有人可以帮助我吗?

干杯!

1 个答案:

答案 0 :(得分:0)

您的XML格式不正确。由于标记是文档中的第一个,因此以下&lt; / item&gt;根据规范有效地终止文档。您需要添加一个包含&lt; item&gt;的其他标记,例如&lt;文件&GT;&LT;项目&GT; ...&LT; /项目&GT;&LT;项目&GT; ...&LT; /项目&GT;&LT; /文件&GT;

要简单地在PHP中处理,请使用simplexml,例如:

<?php

$xml=<<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<document>
<item>
    <title>Hello</title>
    <link>http://www.google.com</link>
</item>
<item>
    <title>Some Title</title>
    <link>http://www.google.com</link>
</item>
</document>
EOD;

$sxml = simplexml_load_string($xml);
var_dump($sxml);

请注意,simplexml默认返回对象而不是数组值。但是,从对象而不是数组中提取所需的值非常简单。例如:

echo $sxml->item[0]->title;

将使用上述XML输出Hello。