Разбор XML с PHP - PullRequest
       38

Разбор XML с PHP

3 голосов
/ 19 февраля 2011

Я пытаюсь разобрать фид заданий, используя PHP SimpleXML. Раньше я использовал только JSON, и у меня возникают проблемы с работой парсера. Вот некоторые примеры данных:

<shrs>
    <rq url="http://api.simplyhired.com/a/jobs-api/xml_v2/q-comission">
        <t>Comission Jobs</t>
        <dt>2011-02-18T23:58:38Z</dt>
        <si>0</si>
        <rpd>10</rpd>
        <tr>192</tr>
        <tv>146</tv>
        <em url=""/>
        <h>
            <kw pos="1"/>
        </h>
    </rq>
    <rs>
        <r>
            <jt>Virtual Recruiter (IT) - Comission ...</jt>
            <cn url="">Remedy Intelligent Staffing</cn>
            <src url="http://api.simplyhired.com/a/job-details/view/jobkey-monster91949932/cjp-0/hits-192?aff_id=28700">Monster</src>
            <ty>organic</ty>
            <loc cty="Buffalo" st="NY" postal="14211" county="" region="" country="US">Buffalo, NY</loc>
            <ls>2011-02-04T05:51:17Z</ls>
            <dp>2011-02-04T05:51:17Z</dp>
            <e>
    Seeking a candidate with previous recruiting experience to work as a Virtual Recruiter for a large client in the IT industry.a Responsibilities: Will recruit, screen, interview, and place candidates for many openings throughout the US Will...
    </e>
        </r>
        <r>
            <jt>Virtual Loan Officer (Mortgage) draw vs comission</jt>
            <cn url="">Netbranchology.com</cn>
            <src url="http://api.simplyhired.com/a/job-details/view/jobkey-7114.353281/cjp-2/hits-192?aff_id=28700">netbranchology.com</src>
            <ty>organic</ty>
            <loc cty="Denver" st="CO" postal="80218" county="" region="" country="US">Denver, CO</loc>
            <ls>2011-02-10T11:47:50Z</ls>
            <dp>2011-01-26T11:36:18Z</dp>
            <e>
    Minimize your overhead by becoming a virtual loan officer... Our client, a Texas-based mortgage banker, has just launched an innovative new program that lets you work from anywhere to originate residential mortgage loans. No office is...
    </e>
        </r>
    </rs>
</shrs>

[и т.д.]

Я бы хотел извлечь метаданные в тегах в переменные, а затем выполнить цикл по каждому результату задания для его обработки. Как я могу сделать это с PHP? (До сих пор я играл с функциями SimpleXML)

Ответы [ 2 ]

2 голосов
/ 19 февраля 2011

Узлы доступны как свойства объекта, атрибуты используют обозначение массива.foreach позволяет перебирать узлы.Вы можете получить содержимое узла, приведя его в виде строки.(так что если вы используете echo это подразумевается)

$shrs = simplexml_load_string($xml);

foreach ($shrs->rs->r as $r)
{
    $jobTitle = $r->jt;
    $city = $r->loc['cty'];

    echo "There's an offer for $jobTitle in $city<br />\n";
}
1 голос
/ 19 февраля 2011

Попробуйте SimpleXML: http://www.php.net/manual/en/book.simplexml.php

Он проанализирует ваш XML в красивый объект.

Редактировать: вот как это использовать (предполагается, что ваш xml хранится в переменной $ xml):

$xmlObject = new SimpleXMLElement($xml);

// to retrieve "http://api.simplyhired.com/a/jobs-api/xml_v2/q-comission"
$url = $xmlObject->rq['url'];

// to retrieve "Comission Jobs"
$t = $xmlObject->rq->t;
...

Надеюсь, это поможет.

...