abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:11 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 19:11 | Zajímavý projekt

    Fugleramme, v překladu 'ptačí rámeček', je open-source projekt postavený na Raspberry Pi, který pomocí lokální umělé inteligence BirdNET-Go rozpoznává ptačí druhy podle jejich zpěvu a na displeji následně zobrazuje koláž tvořenou odpovídajícími ilustracemi. Databáze obsahuje přes 800 ručně vybraných historických přírodovědných ilustrací více než 400 druhů ptáků.

    … více »
    AfD 💙 | Komentářů: 1
    včera 16:55 | Nová verze

    Unicode Consortium, nezisková organizace koordinující rozvoj standardu Unicode, oznámila vydání Unicode 18.0. Přidáno bylo 13 007 nových znaků. Celkově jich je 172 808. Přibylo 9 nových Emoji.

    Ladislav Hagara | Komentářů: 3
    včera 13:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 169 (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 03:33 | Nová verze

    Byla vydána nová verze 6.4 programovacího jazyka Swift (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    17.9. 23:11 | Komunita

    Německý kancléř Friedrich Merz (CDU) se během debaty s finalisty studentské vědecké soutěže Jugend forscht vyjádřil pro konec anonymity na internetu a vyslovil názor, že pro uživatele Internetu by měla platit podobná právní odpovědnost jako pro novináře tradičních médií. Na dotaz studenta, jak by se tedy povinnost uvádět pravé jméno slučovala s prací investigativních novinářů nebo ochranou jejich zdrojů, Merz neodpověděl, ve své

    … více »
    AfD 💙 | Komentářů: 46
    17.9. 17:55 | IT novinky

    Společnost Fujitsu představila FUJITSU-MONAKA CPU a Fujitsu MONAKA Server. Navrženo, vyvinuto a vyrobeno v Japonsku. Pro suverénní AI infrastrukturu.

    Ladislav Hagara | Komentářů: 0
    17.9. 16:44 | IT novinky

    Předprodej v květnu představených notebooků Googlebook, nástupců notebooků Chromebook, bude spuštěn v pondělí 21. září.

    Ladislav Hagara | Komentářů: 4
    16.9. 23:22 | Nová verze

    Byla vydána betaverze Fedora Linuxu 45 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 20. října. S konzolí kmscon místo fbcon. Současně byla vydána betaverze Fedora Linux Asahi Remixu 45. S podporou čipů M3.

    Ladislav Hagara | Komentářů: 4
    16.9. 21:44 | Nová verze

    Po půl roce vývoje od vydání verze 50 bylo vydáno GNOME 51 s kódovým názvem "A Coruña" (Mastodon). Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře. Videopředstavení na PeerTube a YouTube.

    Ladislav Hagara | Komentářů: 37
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2694 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    PHP-4 díl:parsování xml

    10.8.2007 11:47 | Přečteno: 5301× | Linux | poslední úprava: 10.8.2007 14:30

    Již delší dobu jsem nic nenapsal o mých zkušenostech s PHP. Jak je z nadpisu partné zkoušel jsem parsování XML v PHP, ale nějak mi to nevychází.

    Na parsování jsem si vytvořil jednoduchý soubor XML:

    <?xml version="1.0" encoding="UTF-8"?>
    <apcpinstall>
    <type>component</type>
    <name>test</name>
    <author>Filip Bartmann</author>
    <e-mail>xxx@yyy.info</e-mail>
    <license>GNU-GPL</license>
    <sql type="install">CREATE TABLE #__test (test_id int(5) NOT NULL auto_increment, test_name mediumtext NOT NULL, PRIMARY KEY(test_id))</sql>
    <sql type="uninstall">DROP TABLE #_test</sql>
    <files>
    <file id="main">test.php</file>
    <file id="menu">menu.php</file>
    <file id="lang">cs_CZ.utf8</file>
    <file id="lang">en_GB.utf8</file>
    </files>
    </apcpinstall>
    

    Kód pársuji pomocí této třídy:

    class xmlparse {
    	public $langs=Array();
    
    	function begin($parser, $name, $attr) {
    		$this->xml = $name;
    		$this->attr = $attr;
    		$this->pd = 0;
    	}
    
    	function stop($parser, $name) {
    		if ($name == "apcpinstall") {
    			switch ($this->type) {
    				case "component":
    					$sql = "INSERT INTO #__components SET comp_name=\"".$this->name."\", comp_url=\"com=".$this->name."\", comp_include=\"".$this->name."/".$this->main."\", comp_menu=\"".$this->name."/".$this->menu."\",core=0";
    					//dbcon($sql);
    					break;
    				default:
    					break;
    			}
    		}
    	}
    
    	function data($parser, $data) {
    		if ($this->pd == 0) {
                     echo $this->xml." ".$data."<br>";
    			switch ($this->xml) {
    				case "type" :
    					if ($data == "component") {
    						$this->type = "component";
    					}
    					break;
    				case "name" :
    					$this->name = $data;
    				case "sql" :
    					if (isset ($this->attr["type"])) {
    						if ($this->attr["type"] == "install") {
    							//dbcon($data);
    						}
    					}
    					break;
    				case "file" :
    					switch ($this->attr["id"]) {
    						case "main" :
    							$this->main = $data;
    							break;
    						case "menu" :
    							$this->menu = $data;
    						case "lang" :
    							array_push($this->langs,$data);
    						default :
    							break;
    					}
    					break;
    				default :
    					break;
    			}
    			$this->pd++;
    		}
    	}
    
    	function parse($cname) {
    		global $basePath;
    		$this->parser = xml_parser_create();
    		xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
    		xml_set_object($this->parser, $this);
    		xml_set_element_handler($this->parser, "begin", "stop");
    		xml_set_character_data_handler($this->parser, "data");
    		if (file_exists($basePath.'/tmp/install/'.basename($_FILES["comp"]["tmp_name"]).'/'.$cname.'/install.xml')) {
    			$xmlfile = fopen($basePath.'/tmp/install/'.basename($_FILES["comp"]["tmp_name"]).'/'.$cname.'/install.xml', "r");
    			if (!$xmlfile) {
    				echo "Soubor install.xml se nepodařilo otevřít<br/>";
    				return 0;
    			} else {
    				while ($xmldata = fread($xmlfile, filesize($basePath.'/tmp/install/'.basename($_FILES["comp"]["tmp_name"]).'/'.$cname.'/install.xml'))) {
    					xml_parse($this->parser, $xmldata);
    				}
    				xml_parser_free($this->parser);
    				$files=Array($this->main, $this->menu, $this->langs);
    				return $files;
    			}
    		} else {
    			echo "Soubor install.xml neexistuje<br>";
    			return 0;
    		}
    	}
    }
    

    Když si dám hodnoty vytisknout pomocí řádku zvýrazněného kurzívou zobrazí se mi toto:

    apcpinstall
    type component
    type
    name test
    name
    author Filip Bartmann
    author
    e-mail xxx@yyy.info
    e-mail
    license GNU-GPL
    license
    sql CREATE TABLE #__test (test_id int(5) NOT NULL auto_increment, test_name mediumtext NOT NULL, PRIMARY KEY(test_id))
    sql
    sql DROP TABLE #_test
    sql
    files
    file test.php
    file
    file menu.php
    file
    file cs_CZ.utf8
    file
    file en_GB.utf8
    file
    file

    A tady je ten problém. Nemůžu zjistit proč se mi zdvojují ty otevírací tagy, tedy proč tam mám jednou type component a podruhé samotné type? Provizorně jsem to vyřešil pomocí řádků zvýrazněných tučně, ale vím, že je to špatné řešení a také bych se to docela rád naučil správně.

    Druhý problém je, proč se mi v poli files v podpoli langs objevuju menu.php, když ho tam vůbec nedávám:

    Array ( [0] => test.php [1] => menu.php [2] => Array ( [0] => menu.php [1] => cs_CZ.utf8 [2] => en_GB.utf8 ) )

    Nemůžu přijít na to, kde mám chybu. Mohl byste mi někdo poradit co dělám špatně? Předem děkuji.

           

    Hodnocení: 25 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    10.8.2007 12:09 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Nepoužíváš existující knihovny, to je to co děláš špatně. Vo tom tak nějak dneska to programování je.
    10.8.2007 12:14 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Jaké to jsou? U parsování xml v PHP jsem našel ještě nějakou hotovou třídu, ale píšou tam, že je teprve v CVS:-(
    freshmouse avatar 10.8.2007 12:16 freshmouse | skóre: 42 | blog: Bruno Banány
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    SimpleXML je v PHP 5.
    10.8.2007 13:34 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    To se hodí v PHP4 :)
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)
    freshmouse avatar 10.8.2007 13:37 freshmouse | skóre: 42 | blog: Bruno Banány
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Aha, takže ten nadpis "PHP-4 parsování xml" znamená, že se mluví o PHP 4. Já myslel, že je to myšleno jako "4. díl seriálu o PHP"... No nic.
    10.8.2007 13:45 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Co?
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)
    10.8.2007 14:31 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Už jsem to opravil. Je to myšleno jako 4.díl
    10.8.2007 15:02 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Člověk by čekal, že článek nebude vypadat jako dotaz :) Ale to je fuk..
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)
    10.8.2007 16:02 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Dávám to do blogu jednak proto, že je to do Poradny dlouhé a také proto, že v Poradně jsou dotazy ohledne PHP často zamykané, i když PHP je stejně součástí Linuxu, jako jiné programy.;-) A také, aby se někdo mohl z mých chyb poučit.
    Jardík avatar 10.8.2007 23:44 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Od kdy je PHP součástí Linuxu? Já ho tu v "make menuconfig" nikde nevidím ...
    Věřím v jednoho Boha.
    10.8.2007 16:11 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    A kdybych chtěl, aby to fungovalo pod PHP4 i PHP5, tak co mám použít? Teď jsem to už přepsal s pomocí SimpleXML pro PHP5 a ještě potřebuji něco pro PHP4.
    10.8.2007 18:07 Goffix | skóre: 25 | blog: Powered by ArchLinux | Hradec Králové
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    To bude podle mě docela problém. DOM je jedna z věcí co byla pro PHP5 kompletně předělána a třídy nejsou zpětně kompatibilní. V PHP4 bylo rozšíření DOM XML a v PHP5 jsou DOM a SimpleXML, které lze mezi sebou navzájem převádět.
    Daniel Kvasnička ml. avatar 11.8.2007 11:06 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Teď jsem to už přepsal s pomocí SimpleXML pro PHP5 a ještě potřebuji něco pro PHP4.
    A proc? To je dneska takovy problem sehnat hosting pro PHP5? Kdyz se budeme neustale ohlizet na PHP4, jen to bude oddalovat jeho definitivni smrt, ke ktere je urceno.
    FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
    10.8.2007 13:35 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Nechce, nezná, získává zkušenosti. Nedělá to špatně.
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)
    10.8.2007 12:13 KS | skóre: 10 | blog: blg | Horní polní u západní dolní
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Pochybnost, nejistota - základ poznání
    10.8.2007 12:16 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Ten jsem nezkoušel. Já jsem vycházel ze seriálu na Linuxsoftu :-( V tom díle píšou o parsování XML.
    10.8.2007 14:06 KS | skóre: 10 | blog: blg | Horní polní u západní dolní
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Tak ten DOM vyzkoušej. Dělám s tím dotnetu a je to hodně pohodlné.
    Pochybnost, nejistota - základ poznání
    10.8.2007 13:34 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: PHP-4 parsování xml
    Podle mě se ti tam tisknout i uzavírací tagy. Poslední dva, ale z nějakýho důvodu ne, to už je na tobě.
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.