2011-03-21 60 views
2

我有一個數據的XML文件,並運行下面的代碼:PHP簡單的XML數組 - 減號問題

<?php 
$xml = simplexml_load_file("index.xml"); 
$result = $xml->xpath("product"); 

echo $result[0]->name . '<br />'; 
echo $result[0]->price . '<br />'; 
echo $result[0]->info-url . '<br />'; 
echo $result[0]->image-url . '<br />'; 
echo $result[0]->longdescription . '<br />'; 
?> 

我的XML文件的一部分

<product> 
    <name>Test</name> 
    <price>100</price> 
    <info-url>http://www.test.com</info-url> 
    <image-url>http://www.test.com/image.jpg</image-url> 
</product> 

我得到這個錯誤:

注意事項:未定義的常量網址的應用 - 假定 'URL' 中C:\ WAMP \ WWW \概念\ XML到陣列上線\的index.php

它不喜歡的減去字符。我如何得到它?

+0

[使用XML節點名稱與PHP連字符]的可能重複(http://stackoverflow.com/questions/3634599/using-xml- node-names-with-hyphens-in-php) – 2011-03-21 21:27:54

回答

8

的解決方案是使用以下命令:

$result[0]->{'image-url'} 

等的帶連字符的所有屬性。

-1

相反的XPath,我喜歡用:

$url = "filename.xml"; 
$simple = simplexml_load_file($url); 
$arr = json_decode(json_encode($simple) , 1); 

然後我就可以通過訪問元素:

echo $arr['product']['image-url']; 

根據意見,這是一種浪費,但我寧願犧牲幾千字節的內存/和幾微秒的處理時間,以實現更清晰的導航手段並顯着改善代碼的可讀性。特別是當涉及深度嵌套的XML文件。

+0

編碼和解碼是浪費內存。 SimpleXML庫提供了對數據的充分訪問(@Mike Lewis答案) – Minimihi 2015-10-07 10:42:15

+0

@Minimihi - Library提供了對數據的充分訪問,但返回的格式並不直觀。因此,我寧願犧牲幾千字節的存儲空間和幾微秒的處理時間,以獲得更清晰的導航和代碼可讀性。 – Gravy 2015-10-07 11:19:02

-1
$arr = json_decode(json_encode($simple) , 1); 

看起來很簡單,但生成壞陣列,例如。

<product> 
    <name>Test</name> 
    <price/> 
</product> 

返回 「價格」 爲空子陣

[price] => Array 
    (
    )