无法显示Array的内容 - PHP XML

时间:2014-02-26 14:34:26

标签: php xml arrays

我正在尝试使用PHP读取XML文件。 XML文件是来自其他地方的报告。一切正常,除非XML文件最终在'ReportItem'标签中有多个具有相同名称的标签。

例如,当只有1个标签时,该标签的内容会正确显示。但是当有超过1个标签时,它会显示'ARRAY(0x996c840)'。

我的XML看起来像这样:

<Scan>
  <Report>
    <ReportHost> 


    <ReportItem>

        ...

        <see_also>http://google.com</see_also>

        ...

    </ReportItem>
    <ReportItem>

        ...

        <see_also>http://google.com</see_also>
        <see_also>http://google.com</see_also>
        <see_also>http://google.com</see_also>
        <see_also>http://google.com</see_also>
        <see_also>http://google.com</see_also>

        ...

    </ReportItem>

    ...

    </ReportHost> 
  </Report>
</Scan>

我的代码如下:

//Load the XML File
$xml = simplexml_load_file($path);

foreach ($xml->ReportHost as $reportHost)
{

    $x = 1;

    foreach ($reportHost->ReportItem as $reportItem)
    {

        ...

        $ARCHIVES['SEE_ALSO'][$x] = str_replace( "\\n", '<br />', $reportItem->see_also);

        ...

    }
}

我尝试过很多不同的东西,但似乎没什么用。即使只是试图显示它也不起作用。

我试过了:

print_r($xml->xpath("//see_also"));

但如果只有1个标签,那仍然只给我内容,否则我会得到相同的'ARRAY(0x996c840)'结果。

我也尝试过:

$z = 0;                     
while (isset($reportItem->see_also[$z]) AND ($reportItem->see_also[$z] != ""))
{                           
    echo "See Also: " . $reportItem->see_also[$z] . "\n";
    $z++;
}

但我总是得到同样的东西。

我甚至尝试使用xmlutils.php中的'xml_to_array'函数,这是我下载的脚本:

  

http://pynej.blogspot.com/2010/02/convert-xml-to-array-and-array-to-xml.html

但它仍然会显示'ARRAY(0x996c840)'而不是内容。

我真的需要有人帮忙看看我做错了什么。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

必须是:

foreach ($xml->Report->ReportHost as $reportHost)
...

您忘记了<Report>节点。

看到它有效:https://eval.in/106449