2016-04-27 166 views
0

我無法遍歷此xml文件。我正在使用simplexml_load_file()。有沒有人有辦法解決嗎?謝謝你的時間。我是新手!迭代通過PHP中的SimpleXMLElement對象

SimpleXMLElement Object 
(
[ReferenceMember] => SimpleXMLElement Object 
    (
     [Agency] => SimpleXMLElement Object 
      (
       [ID] => xx 
       [ActivityID] => xxxxx 
       [ActivityReferenceID] => xxxxx 
      ) 

    ) 

[Member] => SimpleXMLElement Object 
    (
     [Agency] => SimpleXMLElement Object 
      (
       [ID] => xx 
       [ActivityID] => xxxx 
       [ActivityReferenceID] => xxxx 
      ) 

    ) 

[SubmissionID] => xxxx 
[Company] => xxxxx 

[Emails] => SimpleXMLElement Object 
    (
     [Email1] => [email protected] 
    ) 

[UploadedDate] => 24/11/14 
) 

這是我試過

$data = simplexml_load_file($file); 

foreach ($data as $item) { 

     foreach ($item->item as $entry) { 
      $this->set_date($entry->UploadedDate); 

     } 

} 

$array = array(
      "DATE" => $this->get_date() 

     ); 

var_dump($array); 

這是我得到

array(1) { 
    ["DATE"]=> 
    NULL 
} 

當我嘗試存取權限對象值

var_dump($date->UploadedDate); 

object(SimpleXMLElement)#9 (1) { 
    [0]=> 
    string(8) "24/11/14" 
} 
+1

如果提供實際使用的XML,而不是SimpleXML對象的轉儲,則更容易重現示例。 – IMSoP

回答

0

按照你給我們的信息,你不需要循環在所有的,因爲你只想要一個答案,你確切地知道在哪裏可以找到它:

$data = simplexml_load_file($file); 
$this->set_date((string)$data->UploadedDate); 

請注意,我在這裏使用(string);這會從找到的值中刪除SimpleXML魔術,這可能是您以後想要的。 echo爲你做這個,所以echo $data->UploadedDate;會顯示你的期望。

+0

非常感謝您的回答。它是這樣工作的。但是當我嘗試改變日期格式'$ this-> date = date(「Y-m-d」,$ date);'我得到這個日期:「1970-01-01」。讓我知道你是否有這個問題的想法。再次感謝! – Prosp

+0

@ S.B'date()'需要一個時間戳 - 一個表示自1970年以來秒數的整數 - 不是預格式化的字符串。使用'$ timestamp = strtotime($ formatted_date); echo date('Y-m-d',$ timestamp);'或'$ dateObject = new DateTime($ formatted_date); echo $ dateObject-> format('Y-m-d');'(這些都與這個問題沒有關係,所以如果你仍然陷入困境,搜索或提出一個新問題。) – IMSoP