Тег извлечения SimpleXML вкл. все дочерние элементы - PullRequest
0 голосов
/ 01 октября 2011

Я бы хотел разобрать rss-файл с помощью simplexml.Если я печатаю определенный тег, выбирается только прямой контент - дочерние и теги «sub» не включаются.Как я могу получить доступ к тегу вкл.Имена дочерних тегов и их содержание?

//load rss into $xml
foreach ($this->xml->channel->item as $item) {
  echo "<h3>{$this->out($item->title)}</h3>",
       $this->out($item->description);
}

1 Ответ

0 голосов
/ 01 октября 2011

Вы можете использовать $ this-> xml-> children (), чтобы получить дочерние узлы, а затем использовать это рекурсивно. Недавно я написал метод для рекурсивного копирования одного блока XML в другой, который должен показать вам методы, которые вы можете использовать.

protected function copyXml(SimpleXMLElement $from, SimpleXMLElement $to)
{
    // Create a new branch in the target, as per the source
    $fromValue = (string) $from;
    if ($fromValue)
    {
        $toChild = $to->addChild($from->getName(), (string) $from);
    }
    else
    {
        $toChild = $to->addChild($from->getName());
    }

    // Copy attributes across
    foreach ($from->attributes() as $name => $value)
    {
        $toChild->addAttribute($name, $value);
    }

    // Copy any children across, recursively
    foreach ($from->children() as $fromChild)
    {
        $this->copyXml($fromChild, $toChild);
    }
}

НТН.

...