Возможный дубликат:
PHP Curl, извлечение XML-ответа
Как php parser xml с curl? Вот мой код, как получить xml значения каждого элемента? Благодарю.
<?php define("EMAIL_ADDRESS", "youlichika@hotmail.com"); $ch = curl_init(); $cv = curl_version(); $user_agent = "curl ${cv['version']} (${cv['host']}) libcurl/${cv['version']} ${cv['ssl_version']} zlib/${cv['libz_version']} <" . EMAIL_ADDRESS . ">"; curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); curl_setopt($ch, CURLOPT_ENCODING, "deflate, gzip, identity"); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HTTPGET, TRUE); curl_setopt($ch, CURLOPT_URL, "http://en.wikipedia.org/w/api.php?action=opensearch&search=tokyo&format=xml&limit=2"); $xml = curl_exec($ch); curl_close($ch); var_dump($xml); ?>
XML TREE
<SearchSuggestion version="2.0"> <Query xml:space="preserve">tokyo</Query> <Section> <Item> <Text xml:space="preserve">Tokyo</Text> <Description xml:space="preserve"> , officially , is one of the 47 prefectures of Japan. </Description> <Url xml:space="preserve">http://en.wikipedia.org/wiki/Tokyo</Url> <Image source="http://img.ruphp.com/php/Japan_Tokyo3.png/36px-Japan_Tokyo3.png" width="36" height="49"/> </Item> <Item> <Text xml:space="preserve">Tokyo Broadcasting System</Text> <Description xml:space="preserve"> (), TBS Holdings, Inc. or TBSHD, is a stockholding company in Tokyo, Japan. It is a parent company of a television network named and radio network named . </Description> <Url xml:space="preserve"> http://en.wikipedia.org/wiki/Tokyo_Broadcasting_System </Url> </Item> </Section> </SearchSuggestion>
CURL не имеет ничего общего с XML, это просто механизм доставки, который извлекает XML для вас. Это похоже на то, что молочные вкусы разные, потому что один водитель доставки использует автомобиль, а другой использует грузовик.
Для обработки XML в PHP используйте DOM или SimpleXML
$dom = new DOMDocument(); $dom->loadXML($xml); // where $xml is the result from curl ... do whatever you want with the DOM object here ...
Вы можете просто загрузить результат в SimpleXML
и SimpleXML
данные. Вот пример:
define("EMAIL_ADDRESS", "youlichika@hotmail.com"); $ch = curl_init(); $cv = curl_version(); $user_agent = "curl ${cv['version']} (${cv['host']}) libcurl/${cv['version']} ${cv['ssl_version']} zlib/${cv['libz_version']} <" . EMAIL_ADDRESS . ">"; curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); curl_setopt($ch, CURLOPT_ENCODING, "deflate, gzip, identity"); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HTTPGET, TRUE); curl_setopt($ch, CURLOPT_URL, "http://en.wikipedia.org/w/api.php?action=opensearch&search=tokyo&format=xml&limit=2"); $xml_data = curl_exec($ch); curl_close($ch); // Make sure we actually have something to parse if($xml_data) { $parser = simplexml_load_string($xml_data); foreach($parser->Section as $section) { foreach($section->Item as $item) { echo "{$item->Text}\n\n{$item->Description}\n--------------------\n"; } } }
Вот несколько примеров:
$ php test.php Tokyo , officially , is one of the 47 prefectures of Japan. -------------------- Tokyo Broadcasting System (), TBS Holdings, Inc. or TBSHD, is a stockholding company in Tokyo, Japan. It is a parent company of a television network named and radio network named . --------------------