| Autor | Zpráva | ||
|---|---|---|---|
| Chuchycek Profil |
#1 · Zasláno: 4. 12. 2016, 11:57:35
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 |
#2 · Zasláno: 4. 12. 2016, 12:12:59
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 |
#3 · Zasláno: 4. 12. 2016, 12:14:53
Proto potřebuji nějak nasměrovat, když to při běžném
$data = simplexml_load_string( file_get_contents($url) ); |
||
| juriad Profil |
#4 · Zasláno: 4. 12. 2016, 12:34:43
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";
} |
||
|
Časová prodleva: 10 let
|
|||
0