在 php 中转换 XML


Converting XML in php

>我有一个问题。我有 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 作为字符串存储在变量中时。