Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
XPath – rychle to najdeme

Pavel Ptáček
Pavel Ptáček (neregistrovaný) 59.163.251.---
2. 11. 2009 10:55 Nový

Doplnění - získejme všechny elementy "title"

celé vlákno

Ještě bych doplnil: pokud si přejeme získat všechny elementy „title“ bez ohledu na to, kde jsou ve stromu zasazeny, můžeme použít:

$vysledek = $xpath->evaluate(„//ti­tle“);

Tedy na začítek nasadíme dvě lomítka. (Alespoň takhle jsem to dřív dělal já :)

… ale přesně TOHLE je určitě popsáno v knize, že? (nerad bych knihu sabotoval..)

Jirka Kosek
3. 11. 2009 10:19 Nový

Re: Doplnění - získejme všechny elementy "title"

celé vlákno

Já bych zase dopnil, že // není dobré používat, pokud to není nezbytně nutné, protože naivní implementace XPathu (ta je třeba i v PHP) procházejí všechny uzlu dokumentu a vyhodnocení dotazu je tak relativně pomalé. Je lepší používat co nejvíce specifické dotazy.

fos4
fos4 (neregistrovaný) ---.customer.poda.cz
2. 11. 2009 11:15 Nový

Pamětová náročnost

celé vlákno

Zajímalo by mne, jaka je paměťová náročnost čtení přes DOM, případně použití XPathu. Nevíte někdo ?

d
d (neregistrovaný) ---.kadel.cz
2. 11. 2009 16:02 Nový

Re: Pamětová náročnost

celé vlákno

Hmm, nekdy mala, nekdy velka, nekdy tak akorat… :-)

Vazne, zalezi na tom jaky zpracovavate dokument a jake jsou pozadavky Vasi aplikace. Existuji ale i implementace (ne v PHP) XPath bez nacitani dokumentu do pameti, napr. v ramci http://exist.sourceforge.net/.

Jirka Kosek
3. 11. 2009 10:17 Nový

Re: Pamětová náročnost

celé vlákno

Záleží na konkrétní implementaci a konkrétním dokumentu XML, ale obvykle v paměti DOM strom zabere 3–10× více prostoru než stejný dokument při serializaci do XML.

XPath samotný paměťově náročný není je to dotazovací jazyk – podstatné je, nad jakým úložištěm dotaz pokládáte. V PHP můžete XPath pokládat nad DOM nebo SimpleXML reprezentací (v paměti zaberou v podstatě stejně místa). Pokud je dat hodně a do paměti se nevejdou, je vhodné pro ukládání použít nějakou databázi XML a nad ní spouštět XPath/XQuery dotazy.

Podmnožinu XPathu lze navíc vyhodnocovat streamovaně a zpracovávat tak dokumenty teoreticky neomezené velikosti. Umí to napřípad STXPath (http://stx.sourceforge.net/), bude to umět připravované XSLT 2.1.

fos4
fos4 (neregistrovaný) ---.customer.poda.cz
5. 11. 2009 9:19 Nový

Re: Pamětová náročnost

celé vlákno

Díky za odpověď.

Zasílat nově přidané příspěvky e-mailem