>我有一个问题。我有 2 个文件。第一个文件数据.php:
<?php
$str = '<?xml version="1.0"?>
<products>
<product>
<name>Radio</name>
<price>79.99</price>
<desc>Place for describe</desc>
</product>
<product>
<name>TV</name>
<price>599.99</price>
<desc>Place for describe</desc>
</product>
<product>
<name>Book</name>
<price>75.00</price>
<desc>Place for describe</desc>
</product>
<products>';
?>
第二个文件索引.php:
<?php
include('data.php');
$products =new SimpleXMLElement($str);
foreach($products->product as $product){
echo $product->name;
echo "<br>";
}
?>
我使用Wamserver。当我尝试在网络浏览器中运行索引时.php出现错误:http://zapodaj.net/images/fbd51b9ca6da9.jpg我想显示每个产品的名称。有人可以告诉我如何解决这个问题吗?
您的产品端块错误,您忘记了/
请求找到正确的 xml
<?xml version="1.0"?>
<products>
<product>
<name>Radio</name>
<price>79.99</price>
<desc>Place for describe</desc>
</product>
<product>
<name>TV</name>
<price>599.99</price>
<desc>Place for describe</desc>
</product>
<product>
<name>Book</name>
<price>75.00</price>
<desc>Place for describe</desc>
</product>
</products>
您可以使用此网站在线检查您的xml:http://www.xmlvalidation.com/
首先,XML无效,您需要在末尾添加结束标记:
</product>
</products>';
(文件的最后一行)。其余代码似乎还可以。
其次,你应该使用
simplexml_load_string($str);
示例(带php -a
):
$ php -a
Interactive mode enabled
php > $str='<?xml version="1.0"?>
php ' <products>
php ' <product>
php ' <name>Radio</name>
php ' <price>79.99</price>
php ' <desc>Place for describe</desc>
php ' </product>
php ' <product>
php ' <name>TV</name>
php ' <price>599.99</price>
php ' <desc>Place for describe</desc>
php ' </product>
php ' <product>
php ' <name>Book</name>
php ' <price>75.00</price>
php ' <desc>Place for describe</desc>
php ' </product>
php ' </products>';
php > $products = simplexml_load_string($str);
php > foreach($products->product as $product){
php { echo $product->name;
php { echo "<br>";
php { }
Radio<br>TV<br>Book<br>
正如CommuSoft所说,你还没有关闭你的XML块
</product>
</products>';
你应该像CommuSoft所说的那样使用simplexml_load_string($str);
当您将 XML 作为字符串存储在变量中时。