2015-06-16 2 views
-1

У меня есть эта ошибка: Предупреждение: simplexml_load_string() ожидает параметр 1, чтобы быть строкой, объект дан в на линии 195Внимание: simplexml_load_string() ожидает параметр 1, чтобы быть строка, массив дал

, а также эта ошибка: Фатальная ошибка: Вызов функции члена XPath() на не-объект в C: \ WAMP \

мой код в следующем:

foreach ($GetJobResult->JobReferences as $jobreference_index => $JobReferences) { 
      if (isset ($GetJobResult->JobReferences)) { 

       $xmlJobReference = simplexml_load_string ($JobReferences); 

       $JobReferencetitle = $xmlJobReference->xpath ("//JobReference[Title ='N° ANCIEN DOSSIER']/Reference"); 


       var_dump($GetJobResult->JobReferences); 

      } 
     } 

var_dump ($ GetJobResult-> JobReferences);

object(stdClass)[149] 
    public 'JobReference' => 
    array (size=7) 
     0 => 
     object(stdClass)[150] 
      public 'Type' => string 'STANDARD' (length=8) 
      public 'Title' => string 'N° cde client' (length=14) 
      public 'Reference' => string '' (length=0) 
      public 'ValueType' => string 'ALPHANUMERIC' (length=12) 
      public 'ValueLength_Minimum' => int 0 
      public 'ValueLength_Maximum' => int 20 
     1 => 
     object(stdClass)[151] 
      public 'Type' => string 'STANDARD' (length=8) 
      public 'Title' => string 'N° ANCIEN DOSSIER' (length=19) 
      public 'Reference' => string '' (length=0) 
      public 'ValueType' => string 'NUMERIC' (length=7) 
      public 'ValueLength_Minimum' => int 0 
      public 'ValueLength_Maximum' => int 6 
+1

Поместите 'var_dump ($ GetJobResult-> JobReferences);' в if. Показать результат – splash58

+0

@ splash58 см. Я редактирую мой пост заранее – danoud

+0

это не xml вообще. Вам нужно foreach ($ JobReferences как $ tem) и найти $ item-> Title == your_value. Затем возьмите $ item-> Reference – splash58

ответ

1

На основе вашего вывода var_dump объекты, которые вы перебираете, на самом деле не были созданы SimpleXML - это объекты stdClass, которые являются обозначениями PHP для «объектов без класса».

Вы не можете просто дать объект simplexml_load_string (который, как предполагает его название, и подтверждает предупреждение, ожидает значения в строке), а затем все методы SimpleXML, такие как ->xpath() волшебно доступны.

Если это был XML, вам нужно найти, где в коде синтаксический анализ его в этот набор объектов stdClass, и заменить текущий синтаксический анализатор на SimpleXML. Если это не XML, вам нужно найти другой метод поиска дочерних узлов, а не XPath.