2016-05-30 85 views
0

我有一个get请求返回以下(奇怪的)XML响应;在PHP中解析奇怪的XML

我怎样才能得到<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:不固定

FL:组织乙

但我需要FL是val的值=的<FL val="This">

+0

JSON tranccformation后,我失去了注释(<![CDATA)。我需要使用xmal解析器来获取walue – splash58

+0

json转换不是必需的,我只是在我自己的例子中尝试过。随意丢失转换 – 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需要在示例 – Beer