2016-05-30 9 views
0

私は次の(奇妙な)XMLレスポンスを返すgetリクエストを持っています。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> 

出力例は

キー=空孔型、値=固定されていない

キー=組織、値=組織B

など。

を持つ配列であります

私は二重の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固定されていない:組織B

を私はFLがvalの値である必要はあり=このコード<FL val="This">

+0

のJSON tranccformation後、私はコメントを失ったことを理解することはできません(<![CDATA)。私は、そのwalueを得るためにxmalパーサーを使用する必要があります – 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] //eval.in/579533)これは、FLがあなたの例の '$ item [' val ']値である必要があることを除いてほしいと思う可能性が高いです – Beer