Как разбить и разобрать конкретный текст Википедии - PullRequest
0 голосов
/ 21 января 2012

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

<code>ini_set('user_agent', 'michael@example.com');
$doc = New DOMDocument();
$doc->load('http://en.wikipedia.org/w/api.php?action=parse&page=Main%20Page&format=xml');

$xml = simplexml_import_dom($doc);

print '<pre>';
print_r($xml);
print '
';

Что возвращает:

SimpleXMLElement Object
(
    [parse] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [title] => Main Page
                    [revid] => 472210092
                    [displaytitle] => Main Page
                )

            [text] => <body><table id="mp-topbanner" style="width: 100%;"...

Глупый вопрос / пустая мысль.Я пытаюсь захватить элемент $ xml-> parse-> text и, в свою очередь, разобрать его.В конечном счете, я хочу вернуть следующий объект;как мне этого добиться?

SimpleXMLElement Object
(
    [body] => SimpleXMLElement Object
        (
            [table] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [id] => mp-topbanner
                            [style] => width:100% ...

1 Ответ

1 голос
/ 21 января 2012

После того, как я взял свежий чай и съел банан, вот решение, которое я придумала:

ini_set('user_agent','michael@example.com');
$doc = new DOMDocument();
$doc->load('http://en.wikipedia.org/w/api.php?action=parse&page=Main%20Page&format=xml');
$nodes = $doc->getElementsByTagName('text');

$str = $nodes->item(0)->nodeValue;

$html = new DOMDocument();
$html->loadHTML($str);

Это позволяет мне получить значение элементов, которое я и получил.Например:

echo "Some value: ";
echo $html->getElementById('someid')->nodeValue;
...