Autor Zpráva
Chuchycek
Profil
Ahoj, píšu univerzální xml parser. A narazil jsem na problém. Když xml obsahuje tagy g:type viz.: get2.feedink.com/52720e003547c70561bf5e03b95aa99f. Tak všechny ty tagy s g: zahodím. Napadlo mě, že bych v tom obsahu nahradil ve všech elementech g: za "". Poradí někdo, jak pokračovat?

Díky
juriad
Profil
Chuchycek:
Panebože proč? XML parserů jsou mraky, použij nějaký hotový.
To g: je namespace. Nějak nechápu cemu ti tam vadí, můžeš jej přece považovat za součást názvu elementu.
Chuchycek
Profil
Proto potřebuji nějak nasměrovat, když to při běžném

        $data = simplexml_load_string(
            file_get_contents($url)
        );
odstraním pryč
juriad
Profil
Jsou dva způsoby, jak přistupovat k elementům s namespace:
1) metoda children
2) xpath

Ukázka té první:
$data = simplexml_load_string(
    file_get_contents("http://get2.feedink.com/52720e003547c70561bf5e03b95aa99f")
);

foreach ($data->channel->item as $item) {
    $title = NULL;
    $price = NULL;

# iterace přes všechny bez NS
    foreach ($item->children() as $c) {
        if ($c->getName() == 'title') {
            $title = (string) $c;
        }
    }

# iterace přes všechny g:
    foreach ($item->children("g", TRUE) as $c) {
        if ($c->getName() == 'price') {
            $price = (string) $c;
        }
    }

# výpis
    echo "title: " . $title . "\n";
    echo "price: " . $price . "\n";
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: