我試圖用simplexml_load_file
函數解析PHP中的XML文件。一切都很好,除了我的XML文件有一個<TIME>
標籤,這是一個PHP函數。XML標記名是一個PHP函數
所以下面的代碼未能得到變量值:
$xml = simplexml_load_file('some_xml_file.xml');
$value = $xml->SOME_TAG->TIME;
我如何獲得這個價值?
我試圖用simplexml_load_file
函數解析PHP中的XML文件。一切都很好,除了我的XML文件有一個<TIME>
標籤,這是一個PHP函數。XML標記名是一個PHP函數
所以下面的代碼未能得到變量值:
$xml = simplexml_load_file('some_xml_file.xml');
$value = $xml->SOME_TAG->TIME;
我如何獲得這個價值?
從PHP手冊:包含下PHP的命名約定不 允許(例如連字符)字符的XML文檔內
訪問元件可以 實現由撐杆和 內包封元素名稱撇號。
例3獲得
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->movie->{'great-lines'}->line; // "PHP solves all my web problems"
?>
如果你需要讓你可以做到這一點的一個屬性:
到目前爲止,我們只覆蓋讀取元素名稱的工作, 它們的值。 SimpleXML也可以訪問元素屬性。像元素一樣訪問元素的屬性 。
foreach ($xml->movie[0]->rating as $rating) {
switch((string) $rating['type'])
這對我的作品
<?php
$xmlString = "<top><middle><TIME>1:27</TIME></middle></top>";
$xml = simplexml_load_string($xmlString);
echo $xml->middle->TIME;
php /tmp/xml.php
1:27
檢查XML文件的內容。對於你的PHP代碼工作,它至少應該包含這樣的:
<XML>
<SOME_TAG>
<TIME>1:27</TIME>
</SOME_TAG>
</XML>
當我用你的代碼合併此XML文件,它按預期工作。
謝謝大家,我設法得到價值,但仍然有些奇怪。 XML例子:
<INGREDIENTS>
<INGREDIENT>
<NAME>Potatoes</NAME>
<AMOUNT>10 kg</AMOUNT>
<TME>20 min</TIME>
</INGREDIENT>
</INGREDIENTS>
PHP代碼得到名稱,金額和時間值:
$ing = $xml->INGREDIENTS->INGREDIENT;
$name = $ing->NAME;
$amount= $ing->AMOUNT;
$time= $ing->TIME;
echo $name."/".$amount."/".$time;
結果:
Potatoes/10 kg/
但是,如果我用全路徑TIME標籤:
$ing = $xml->INGREDIENTS->INGREDIENT;
$name = $ing->NAME;
$amount= $ing->AMOUNT;
$time= $xml->INGREDIENTS->INGREDIENT->TIME;
echo $name."/".$amount."/".$time;
結果:
Potatoes/10 kg/20 min
任何人都可以解釋爲什麼它的工作方式是這樣嗎?
對於舊的PHP 5.4.25,在給定XML文件示例的情況下,這適用於我:'$ xml = simplexml_load_file('some_xml_file.xml'); $ ing = $ xml-> INGREDIENT; $ name = $ ing-> NAME; $ amount = $ ing-> AMOUNT; $ time = $ ing-> TIME;'所以答案是:您需要使用正確的方式訪問SimpleXMLObjects的屬性... – Werner
你可以嘗試更具體的錯誤嗎?因爲據我所知,在這種情況下,PHP不會*嘗試執行函數time(),因爲它沒有任何括號(對於函數調用是必需的)。在' - >'之後,PHP查找對象的成員,而不是一般函數。 –