PHP迭代并显示XML数据

时间:2014-04-10 13:35:05

标签: php xml

我需要读取XML数据并在我的HTML页面上显示它们。 我正在使用PHP脚本来准备,解析和显示数据。

这是我的XML文件示例:

<info>
    <data>
        <aaa>AAAA</aaa>
        <bbb>BBBB</bbb>
        <ccc>CCC</ccc>
        <aaa>RRRR</aaa>    (*)
        <bbb>PPPP</bbb>    (*)     
        <ccc>ZZZZ</ccc>    (*)
    </data>
     <data>
        <aaa>YYYY</aaa>
        <bbb>TTTT</bbb>
        <ccc>WWWW</ccc>
        <aaa>QQQQ</aaa>    (*)
        <bbb>PPPP</bbb>    (*)     
        <ccc>ZZZZ</ccc>    (*)
         ...
</info>

我能够读取标签“aaa”,“bbb”,“ccc”(对于每个“数据”标签)的第一个值,但不能读取其他值(注意:标签是相同的,值改为)。我不知道如何访问这些值(参见marker(*))

这里尝试迭代XML结构的代码片段:

 $myConf = simplexml_load_file('data.xml');
 for ($i = 0; $i < sizeof($myConf->data); $i++) {
     echo '<td>'.$myConf->data[$i]->aaa.'<BR>'.$myConf->data[$i]->bbb.'</td>'
 }

1 个答案:

答案 0 :(得分:0)

您必须遍历$data["aaa"]它是<aaa>的值数组,请参阅示例:

$xml = <<<XML
<info>
  <data>
    <aaa>AAAA</aaa>
    <bbb>BBBB</bbb>
    <ccc>CCC</ccc>
    <aaa>RRRR</aaa>
    <bbb>PPPP</bbb>
    <ccc>ZZZZ</ccc>
  </data>
  <data>
    <aaa>YYYY</aaa>
    <bbb>TTTT</bbb>
    <ccc>WWWW</ccc>
    <aaa>QQQQ</aaa>
    <bbb>PPPP</bbb>
    <ccc>ZZZZ</ccc>
  </data>
</info>
XML;

$xe = new SimpleXMLElement($xml);

foreach ($xe->data as $data) {
  foreach ($data as $tag => $value) {
    printf("tag: %s => %s\n", $tag, $value);
  }
}

输出:

tag: aaa => AAAA
tag: bbb => BBBB
tag: ccc => CCC
tag: aaa => RRRR
tag: bbb => PPPP
tag: ccc => ZZZZ
tag: aaa => YYYY
tag: bbb => TTTT
tag: ccc => WWWW
tag: aaa => QQQQ
tag: bbb => PPPP
tag: ccc => ZZZZ