Использование cURL и simpleXMLElement для извлечения данных. Как получить значение элемента XML после XPATH? - PullRequest
0 голосов
/ 11 декабря 2011

У меня проблемы с извлечением нужных мне данных из объекта SimpleXMLElement. Вот основы кода, который я использую:

curl_setopt( $ch, CURLOPT_URL, $URL );
$html = curl_exec( $ch );
$html = $tidy->parseString( $html, $tc, 'utf8' );
$tidy->cleanRepair();
$html = $tidy->body()->value;
$xml = new SimpleXMLElement( $html );

$xml = $xml->xpath( "//ul[@id='wxoptions']/li[3]/a" ); //Your XPATH

print_r( $xml );

Переходит к нужному нужному HTML-элементу, но выводит:

Array
(
    [0] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [href] => http://www.mylink.com
                    [title] => mylink
                )

            [0] => mylink
        )

)

Мне нужно значение [href], "http://www.mylink.com" в этом массиве. Как мне извлечь это из вывода, который я включил? Я в замешательстве и очень плохо знаком с SimpleXMLElement и Xpath.

1 Ответ

0 голосов
/ 11 декабря 2011

Использовать итерацию и атрибуты

foreach ( $xml->xpath( "//ul[@id='wxoptions']/li[3]/a" ) as $node)
{
  $href = $node->attributes("href");
}

Или напрямую вызывается:

$href = $xml[0]->attributes("href");
...