我正在尝试使用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)'而不是内容。
我真的需要有人帮忙看看我做错了什么。在此先感谢您的帮助!
答案 0 :(得分:1)
必须是:
foreach ($xml->Report->ReportHost as $reportHost)
...
您忘记了<Report>
节点。
看到它有效:https://eval.in/106449