2013-01-12 22 views
-1

可能重複:
A simple program to CRUD node and node values of xml file如何在PHP中調用XML數據?

我想在我在下面的方式調用XML數據。但它不適合我。任何人都可以告訴我如何使它工作?

<broad> 
    <site> 
     <title>My Site Name</title> 
     <caption>My Site Caption</caption> 
     <hostname>www.mydomain.com</hostname> 
    </site> 
<broad> 

我的PHP文件是

<?php 
$xml = simplexml_load_file('settings.xml'); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title><?php echo $xml->title; .'|'. $xml->caption; ?></title> 
    </head> 

    <body> 
    </body> 
</html> 

爲什麼上述方式不工作?有沒有其他方式比這更容易?

+0

首先刪除第一個';'因爲';'將打破回聲陳述,你想連接標題 – Kakawait

+0

你錯過了'廣泛'和'網站'我相信。可能$ xml-> broad-> site-> title會起作用。在任何情況下var_dump($ xml);將顯示結構 – scott

+0

是@scott - 調用爲$ xml-> site-> title;幫助過我。 – lock

回答

2

您需要訪問site節點:

<?php echo (string) $xml->site->title?> 

如果有疑慮,用var_dump

<?php echo '<pre>'; var_dump($xml); echo '</pre>'; ?> 
+0

請注意,var_dump,print_r等不會告訴你SimpleXML對象中除了最簡單的XML之外的所有內容,因爲構建了大量的「魔術」進入SimpleXML模塊。我寫了[一些特定的調試功能](https://github.com/imsop/simplexml_debug)用於更復雜的XML。 – IMSoP

0

使用以下命令:

<?php echo (string)$xml->site->title .'|'. (string)$xml->site->caption; ?> 
0

使用SimpleXML的調試與var_dump()print_r()

+0

重要的是要記住var_dump,print_r等不會告訴你所有在SimpleXML對象中的任何內容,除了最簡單的XML之外,由於構建了大量的「魔術」進入SimpleXML模塊。我寫了[一些特定的調試功能](https://github.com/imsop/simplexml_debug)用於更復雜的XML。 – IMSoP