Как извлечь содержимое <uri></uri> в XML-документ? - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть документ, структура которого похожа на приведенную ниже.
Есть много <entry>. У меня вопрос, как я могу вывести <uri> каждой записи? И еще вопрос, как можно вывести только USERNAME?

Это файл, который я хочу получить имена пользователей http://search.twitter.com/search.atom?q=yankees

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.w3.org/2005/Atom" xmlns:twitter="http://api.twitter.com/" xmlns:georss="http://www.georss.org/georss">

<entry>
  <author>
    <name></name>
      <uri>http://twitter.com/USERNAME</uri>
  </author>
</entry>

Ответы [ 3 ]

0 голосов
/ 08 февраля 2012

Вы можете использовать запросы Xpath http://www.php.net/manual/en/simplexmlelement.xpath.php или же http://php.net/manual/en/domxpath.query.php

0 голосов
/ 08 февраля 2012

Вы должны использовать SimpleXML какой-то цикл, который проходит через все s.(foreach($xml->entry as $entry) цикл должен работать нормально, я думаю.)

И для второго: если это всегда http://twitter.com/USERNAME, просто посчитайте длину префикса, чем используйте substr.

Ресурсы дляиспользование: substr , SimpleXML , SimpleXML

0 голосов
/ 08 февраля 2012
<?php
$xml = new DOMDocument;

// link to ur file
$xml->load('');    

foreach ($xml->getElementsByTagName('entry') as $product ) 
{
    $append = array();

    foreach($product->getElementsByTagName('uri') as $name ) {
        // Stick $name onto the array
        $append[] = $name;
    }
}

$result = $xml->saveXML();
print_r(str_replace('http://twitter.com/','',$result));
?>
...