/ / Tag pobierania SimpleXML zawierający. wszystkie elementy potomne - php, xml, rss, tagi, simplexml

Tag pobierania w formacie SimpleXML, w tym wszystkie elementy potomne - php, xml, rss, tags, simplexml

Chciałbym parsować plik rss z simplexml. Jeśli wydrukuję określony znacznik, wybierana jest tylko treść bezpośrednia - nie są uwzględniane żadne elementy podrzędne i znaczniki „podrzędne”. Jak mogę uzyskać dostęp do tagu nazwy tagów potomnych i ich zawartość?

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

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz użyć $ this-> xml-> children (), aby uzyskać dzieckowęzły, a następnie użyj tego rekurencyjnie. Niedawno napisałem metodę kopiowania rekurencyjnie jednego bloku XML do innego - który powinien pokazać techniki, których możesz użyć.

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);
}
}

HTH.