2015-01-05 37 views
1

我遇到問題。我有2個文件。第一個文件data.php:在php中轉換XML

<?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。當我嘗試在網絡瀏覽器中運行index.php時,出現錯誤: http://zapodaj.net/images/fbd51b9ca6da9.jpg 我想顯示每個產品的名稱。有人能告訴我如何解決這個問題嗎?

回答

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/

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> 
+0

你是對的,刪除我的和你+1 ;-) – baao

0

由於CommuSoft認爲您沒有關閉您的XML塊

</product> 
</products>'; 

而且你應該使用作爲CommuSoft說:simplexml_load_string($str); 當你存儲你的XML在一個變量中作爲一個字符串。