我在PHP代码中解析XML并收到警告“为foreach提供的无效参数”。 以下是XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<BookStore>
<book>
<title>Computer Concepts</title>
<auther>Goerge Arthar</auther>
<category>Computer Science</category>
<price>24.00</price>
</book>
<book>
<title>Algebra</title>
<auther>Mike</auther>
<category>Mathematics</category>
<price>34.00</price>
</book>
</BookStore>
并使用以下代码:
<?php
$xmlDOM = new DOMDocument();
$xmlDOM->load("Books.xml");
$document = $xmlDOM->documentElement;
foreach ($document->childNodes as $node) {
foreach($node->childNodes as $temp) {
echo $temp->nodeName."=".$temp->nodeValue."<br />";
}
}
?>
注意:我得到了我需要的输出但有警告。它显示数组不为空。 请看输出:
Warning: Invalid argument supplied for foreach() in D:\program Files\wamp\www\Test web\Day2\xmlparsing.php on line 8
#text=
title=Computer Concepts
#text=
auther=Goerge Arthar
#text=
category=Computer Science
#text=
price=24.00
#text=
Warning: Invalid argument supplied for foreach() in D:\program Files\wamp\www\Test web\Day2\xmlparsing.php on line 8
#text=
title=Algebra
#text=
auther=Mike
#text=
category=Mathematics
#text=
price=34.00
#text=
Warning: Invalid argument supplied for foreach() in D:\program Files\wamp\www\Test web\Day2\xmlparsing.php on line 8
答案 0 :(得分:0)
您正尝试在book
部分之前和之后迭代文本节点。
答案 1 :(得分:0)
foreach ($document->childNodes as $node) {
if ($node->hasChildNodes()) {
foreach($node->childNodes as $temp) {
echo $temp->nodeName."=".$temp->nodeValue."<br />";
}
}
}
答案 2 :(得分:0)
不确定xml是如何工作的,但是这个错误是你的foreach中不是数组的第一个$变量的类。因为该函数只能分解数组。