2012-02-16 47 views
0

我想用PHP SimpleXML來解析(小的臨界)XML ...但我可以aither獲得屬性或任一值... M中無法解析這個XML正確解析複雜的XML與PHP簡單的XML

<?xml version="1.0" encoding="UTF-8" ?> 
<response uri="/crm/private/xml/Leads/getMyRecords"> 
    <result> 
     <Leads> 
      <row no="1"> 
       <FL val="LEADID">418176000000051001</FL> 
       <FL val="SMOWNERID">418176000000047003</FL> 
       <FL val="Lead Owner"><![CDATA[Amit Patil]]> 
       </FL> 
       <FL val="Company"><![CDATA[demo Company]]> 
       </FL> 
       <FL val="First Name"><![CDATA[Test]]> 
       </FL> 
       <FL val="Last Name"><![CDATA[Demo]]> 
       </FL> 
       <FL val="Designation"><![CDATA[Tesing Lead]]> 
       </FL> 
       <FL val="No of Employees"><![CDATA[0]]> 
       </FL> 

這就是我洙遠遠

$xml = simplexml_load_file($url); 
if($xml != null){ 
    foreach($xml->result->Leads->row as $key=>$row){ 
     foreach($row->FL as $key=>$val){ 
      echo $val.","; 
     } 
    } 
} 

如何使用SimpleXML我解析這個XML或可能是別的東西?

回答

4

VAL是attributeof FL,而不是內容...所以我不知道你想找回當您使用含糊命名爲$ VAL

由於代碼,您有應該已經顯示了什麼每個元素的含量:檢索屬性,使用

foreach($xml->result->Leads->row as $key=>$row){ 
    foreach($row->FL as $key => $value){ 
     echo $value['val']." => "; 
     echo $value."<br />"; 
    } 
} 

從你的XML片段,這給:

LEADID => 418176000000051001 
SMOWNERID => 418176000000047003 
Lead Owner => Amit Patil 
Company => demo Company 
First Name => Test 
Last Name => Demo 
Designation => Tesing Lead 
No of Employees => 0 
+0

我的工作就可以了2-3小時,走了deeeep裏,忘了認爲簡單le ...甚至沒有注意到它應該工作,如果我認爲它像一個數組像你這樣做:) :)我解決了這個使用這個\t foreach($ row-> FL作爲$ val)$ val-> attributes( 。) 「=」 $ VAL; – 2012-02-16 11:06:24

+0

謝謝你sooo多了這個簡單的解決方案,並使我恢復正常:) :) :) – 2012-02-16 11:08:15

+0

在附註中,如果希望存儲$ value的字符串值,請使用strval($ value),因爲$ value是實際上是一個簡單的xml對象。 – 2015-03-25 05:11:27