2016-05-30 2 views
0

У меня есть запрос на получение следующего (странного) ответа XML;Разбор странного XML в PHP

Как я могу получить каждый вал <FL val=..>, как ключ и значение внутри <FL></FL> в качестве значения?

<?xml version="1.0" encoding="UTF-8" ?> 
<response uri=" xml/JobOpenings/getRecords"> 
<result> 
    <JobOpenings> 
     <row no="1"> 
      <FL val="JOBOPENINGID">1001</FL> 
      <FL val="Posting Title"> 
       <![CDATA[Controller]]> 
      </FL> 
      <FL val="Work Experience"> 
       <![CDATA[Medior]]> 
      </FL> 
      <FL val="Vacancy type"> 
       <![CDATA[Not Fixed]]> 
      </FL> 
      <FL val="Organisation"> 
       <![CDATA[Organisation B]]> 
      </FL> 
     </row> 
     <row no="2"> 
      <FL val="JOBOPENINGID">1002</FL> 
      <FL val="Posting Title"> 
       <![CDATA[Accounting & Reporting manager]]> 
      </FL> 
      <FL val="Job Opening Status"> 
       <![CDATA[In-progress]]> 
      </FL> 
      <FL val="Client Name"> 
       <![CDATA[MVRDO]]> 
      </FL> 
      <FL val="Work Experience"> 
       <![CDATA[Medior]]> 
      </FL> 
      <FL val="Rate"> 
       <![CDATA[0]]> 
      </FL> 
      <FL val="Vacancy type"> 
       <![CDATA[Fixed]]> 
      </FL> 
      <FL val="Specialisme"> 
       <![CDATA[Finance]]> 
      </FL> 
      <FL val="Organisation"> 
       <![CDATA[Organisation A]]> 
      </FL> 
     </row> 
    </JobOpenings> 
</result> 
</response> 

Пример выходных данных, что я хочу является массивом с

ключ = вакансий тип, значение = не фиксировано

ключ = Организация, значение = Организация Б

и т.д ..

Я знаю, что мне нужен двойной foreach, такой как:

$array=simplexml_load_string($xml);  
    foreach ($array->result->JobOpenings->row as $item){ 
     foreach($item->children() as $key => $value){ 

      echo '{$key} : {$value} </br>'; //But what to do here?? 
     } 
    } 

Приведенный выше код дает выход:

FL: Не Fixed

FL: Организация B

, но мне нужно FL быть значение Валу = внутри <FL val="This">

+0

после JSon tranccformation я потерял комментарии ( splash58

+0

json transform не нужно, я просто попробовал его в моем собственном примере. Не стесняйтесь терять трансформацию – Beer

ответ

0

Этот код спускается к стоимости, которую вы просите. Возможно, вы хотите более сложный поиск, но я не могу понять, что из вашего вопроса

$doc = simplexml_load_string($xml); 

foreach ($doc->result->{0}->JobOpenings->{0}->row as $row) 
    foreach($row as $item) { 
     if(isset($item['val'])) echo $item['val'] .' '; 
     echo $item . "\n"; 
    } 

demo

+0

Спасибо за быстрый ответ, за исключением того, что я не ожидаю ответа. То, что мне нужно, это итерация по каждой строке и каждому FL, мне нужно получить все ключи и значения FL и сохранить их в массиве – Beer

+0

@Beer Я обновил ответ – splash58

+0

взгляните на это [demo] (https: //eval.in/579533), это более вероятно, что я хочу, кроме того, что FL должен быть значением $ item ['val'] в вашем примере – Beer