Как прочитать значение XML дочернего узла в строке, используя PHP? - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть строка, которая получает свое значение динамически с другого сервера.Значение строки

$xmloutput = '<response uri="/crm/private/xml/Leads/getRecordById">
    <result>
        <Leads>
            <row no="1">
                <FL val="LEADID">131</FL>
                <FL val="SMOWNERID">20001</FL>
                <FL val="Lead Owner"><![CDATA[Aaron]]></FL>
                <FL val="First Name"><![CDATA[Carol]]></FL>
                <FL val="Last Name"><![CDATA[Custer]]></FL>
                <FL val="Email"><![CDATA[good51@gmail.com]]></FL>
            </row>
            <row no="2">
                <FL val="LEADID">2070</FL>
                <FL val="SMOWNERID">20001</FL>
                <FL val="Lead Owner"><![CDATA[Aaron]]></FL>
                <FL val="Last Name"><![CDATA[Florence, SC]]></FL>
            </row>
        </Leads>
    </result>
</response>

Мой вопрос, как правило, мы используем $xml = simplexml_load_file("test1.xml"); для загрузки файлов XML, но здесь в моем требовании это строка, как я могу прочитать это значение строки и извлечь дочерний узела его стоимость?Пример:

<FL val="LEADID">131</FL> // its key is LEADID and value is 131
<FL val="First Name"><![CDATA[Carol]]></FL> // its key is First Name and value is Carol

Есть ли способ поместить это в массив?чтобы мне было легко распечатать его значение узла?

1 Ответ

0 голосов
/ 22 сентября 2018

Используйте simplexml_load_string() для чтения xml из строки.Затем выполните цикл по элементам row и выполните цикл по элементам FL, а затем получите текстовое содержимое и атрибут элемента.

$xml = simplexml_load_string($string); 
foreach ($xml->Leads->row as $row) {
    foreach ($row->FL as $fl) {
        echo "{$fl} => {$fl['val']}<br>";
    }
}
...