Komentáře k článku

XPath – rychle to najdeme

V dnešním pokračování seriálu o práci s dokumenty ve formátu XML v jazyce PHP se podíváme na dotazovací jazyk XPath. Na rozdíl od předcházejících metod zpracování XML v XPath neurčujeme, jak se má s informacemi naložit, ale specifikujeme, jaká data chceme.

Zpět na článek

6 komentářů k článku XPath – rychle to najdeme:

  1. Pavel Ptáček

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

    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..)

    1. Jiří KosekAutor příspěvku

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

      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.

  2. fos4

    Pamětová náročnost

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

    1. d

      Re: Pamětová náročnost

      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/.

    2. Jiří KosekAutor příspěvku

      Re: Pamětová náročnost

      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.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3113