2016-04-27 2 views
0

Я не могу перебирать этот XML-файл. Я использую simplexml_load_file(). у кого-нибудь есть решение? Спасибо за ваше время. Я новичок!итерация через SimpleXMLElement Object в php

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 
} 

, когда я пытаюсь Acces значение объекта

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

Смежные вопросы