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í
×
    včera 23:22 | Zajímavý software

    Na Slovensku vznikla úplne nová rally hra, ktorá je zadarmo a funguje vo Windowse, Linuxe či na Macu. Greenie Rally má viac ako 50 tratí a vozidiel, šampionáty či turnaje. Má retro feeling a imituje automobilové hry z prelomu tisícročí. Vyskúšate prejsť všetky mapy na Škode 130RS?

    Stanislav Hoferek | Komentářů: 0
    včera 14:33 | Komunita

    Do základního systému NetBSD -current byl přidán nový editor atto jako alternativa k editorům vi a xedit.

    Ladislav Hagara | Komentářů: 1
    včera 14:11 | IT novinky

    Společnost System76 představila kompaktní 11litrový Thelio Prime Desktop. S procesorem AMD Ryzen 9000. S Pop!_OS 24.04 LTS s desktopovým prostředím COSMIC nebo Ubuntu 24.04 LTS.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Humor

    Čínská státní televize pozastavila vysílání španělské La Ligy a čínské internetové platformy omezily obsah s Kylianem Mbappém poté, co slavný fotbalista ve francouzském pořadu The Bridge mluvil o svém oblíbeném memu, v němž je jeho tvář vložena do portrétu zobrazujícího diktátora Mao Ce-tunga. 'Můj oblíbený mem je ten, na kterém dali můj obličej na čínského diktátora. To mě opravdu rozesmívá. S přáteli ho používám pořád' řekl,

    … více »
    Pendrekama do nich❗ | Komentářů: 4
    včera 13:22 | IT novinky

    Při příležitosti oslav Dne vzniku samostatného československého státu (28. října) byly uděleny medaile Za zásluhy tvůrci aplikace Záchranka Filipu Maleňákovi, vědci v oblasti umělé inteligence Tomáši Mikolovovi a Olze Štěpánkové, vědkyni zabývající se kybernetikou, robotikou a strojovým učením, průkopnici v oblastech výuky a využití umělé inteligence v medicínském inženýrství.

    Pendrekama do nich❗ | Komentářů: 2
    včera 01:33 | IT novinky

    Apple představil nový iPad mini, iMac s čipem M6, 14palcový MacBook Pro s čipem M6 a MacBook Pro s PROLED XDR displejem – první Mac s dotykovým ovládáním.

    Ladislav Hagara | Komentářů: 4
    28.10. 23:22 | Zajímavý projekt

    Nedávno představený projekt mapSTL.com řeší budoucnost. 𝕏: "Netušil jsem, kolik patentů na generování map existuje. Existují patenty na generování fantasy map 🫣. Cokoliv je na 3D tiskárnu a tvoří to produkt, bude to mít patenty. Tak bacha na to!" … více »

    Ladislav Hagara | Komentářů: 3
    28.10. 18:55 | Nová verze

    Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.4 (𝕏). Přehled novinek a vylepšení v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    28.10. 18:22 | Bezpečnostní upozornění

    Byla objevena zranitelnost Tailworm v Tailscale a Headscale umožňující lokální eskalaci práv přihlášeného uživatele. Následně byla v Tailscale v opravené verzi 1.104.4+ změněna architektura aplikace. Viz příspěvek na blogu Tailscale.

    vencour | Komentářů: 0
    27.10. 18:11 | Nová verze

    Byl vydán Mozilla Firefox 159.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 159 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2940 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    Rozcestník

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

    10.8.2007 11:47 | Přečteno: 5322× | 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ákno • Nahoru

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