Устранение неполадок при разборе XML-документа с использованием PHP SimpleXml - PullRequest
0 голосов
/ 14 декабря 2011

Ранее я использовал xpath для обработки элемента XML, однако я пытаюсь получить правильный синтаксис для этого конкретного XML.

Я пытаюсь проанализировать ответ API-хранителя.Пример ответа:

<response user-tier="approved" current-page="1" start-index="1" page-size="10" pages="1" total="10" status="ok">
<results>
<tag type="series" web-title="Cycling" section-name="Life and style"   id="lifeandstyle/series/cycling" api-   url="http://content.guardianapis.com/lifeandstyle/series/cycling" section-id="lifeandstyle" web-  url="http://www.guardian.co.uk/lifeandstyle/series/cycling"/>
 <tag type="keyword" web-title="Cycling" section-name="Sport" id="sport/cycling" api- url="http://content.guardianapis.com/sport/cycling" section-id="sport" web- url="http://www.guardian.co.uk/sport/cycling"/>
 <tag type="keyword" web-title="Cycling" section-name="Life and style"   id="lifeandstyle/cycling" api-url="http://content.guardianapis.com/lifeandstyle/cycling"    section-id="lifeandstyle" web-url="http://www.guardian.co.uk/lifeandstyle/cycling"/>
 <results>
 <response>

Вот моя первая попытка кодирования в PHP (я подключился с помощью cURL):

 $news_items = new SimpleXMLElement($result); //loads the result of the cURL into a simpleXML response 

 $news_items = $guardian_response->xpath('results'); 

 foreach ($news_items as $item) { //for each statement every entry will load the news_item  and the web_url for the document
    $item_block = "<p class=\"web_title\">";
$item_block = "<p class=\"web_url\">";
  }

Ничего не получается, есть ли недостаткив моем коде?

1 Ответ

0 голосов
/ 14 декабря 2011
<?php
    function getAttribute($object, $attribute) { 
        foreach($object->attributes() as $a => $b) { 
            if ($a == $attribute) { $return = $b; } 
        } 
        if($return) { return $return; } 
    } 

    try {
        $xml = simplexml_load_file( "parse.xml" );

        /* Pay attention to the XPath, include all parents */
        $result = $xml->xpath('/response/results/tag');

        while(list( , $node) = each($result)) {
             echo getAttribute( $node, "type" );
        }

    } catch( Exception $e ) {
        echo "Exception on line ".$e->getLine()." of file ".$e->getFile()." : ".$e->getMessage()."<br/>";
    }
?>
...