在php中转换XML

时间:2015-01-05 16:31:01

标签: php xml

我有问题。我有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 我想显示每个产品的名称。有人可以告诉我如何解决这个问题吗?

3 个答案:

答案 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作为字符串存储在变量中时。