разбирать сложные xml с php simple xml - PullRequest
0 голосов
/ 16 февраля 2012

Я хочу проанализировать (немного критично) XML с помощью php simplexml ... Но я могу получить атрибут или любое значение ... Я не могу правильно проанализировать этот 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.",";
       }
   }
}

Как я могу разобрать этот XML с помощью simplexml или может быть что-то еще ??

1 Ответ

4 голосов
/ 16 февраля 2012

val - это атрибут 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 
...