我有问题。我有2个文件。第一个文件data.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>';
?>
第二个文件是index.php:
<?php
include('data.php');
$products =new SimpleXMLElement($str);
foreach($products->product as $product){
echo $product->name;
echo "<br>";
}
?>
我使用Wamserver。当我尝试在Web浏览器中运行index.php时出现错误: http://zapodaj.net/images/fbd51b9ca6da9.jpg 我想显示每个产品的名称。有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:1)
首先,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>
答案 1 :(得分:1)
你的产品结束是错误的,你忘了/
请求找到正确的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/
答案 2 :(得分:0)
CommuSoft表示你已经关闭了你的XML块
</product>
</products>';
你应该使用CommuSoft说simplexml_load_string($str);
当您将XML作为字符串存储在变量中时。