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:33 | Nová verze

    Společnost comma.ai po třech letech od vydání verze 0.9 vydala novou verzi 0.10 open source pokročilého asistenčního systému pro řidiče openpilot (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    včera 21:55 | Nová verze Ladislav Hagara | Komentářů: 2
    včera 14:11 | IT novinky

    Řada vestavěných počítačových desek a vývojových platforem NVIDIA Jetson se rozrostla o NVIDIA Jetson Thor. Ve srovnání se svým předchůdcem NVIDIA Jetson Orin nabízí 7,5krát vyšší výpočetní výkon umělé inteligence a 3,5krát vyšší energetickou účinnost. Softwarový stack NVIDIA JetPack 7 je založen na Ubuntu 24.04 LTS.

    Ladislav Hagara | Komentářů: 4
    včera 00:44 | Bezpečnostní upozornění

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) spolu s NSA a dalšími americkými úřady upozorňuje (en) na čínského aktéra Salt Typhoon, který kompromituje sítě po celém světě.

    Ladislav Hagara | Komentářů: 23
    27.8. 16:33 | IT novinky

    Společnost Framework Computer představila (YouTube) nový výkonnější Framework Laptop 16. Rozhodnou se lze například pro procesor Ryzen AI 9 HX 370 a grafickou kartu NVIDIA GeForce RTX 5070.

    Ladislav Hagara | Komentářů: 1
    27.8. 14:22 | IT novinky

    Google oznamuje, že na „certifikovaných“ zařízeních s Androidem omezí instalaci aplikací (včetně „sideloadingu“) tak, že bude vyžadovat, aby aplikace byly podepsány centrálně registrovanými vývojáři s ověřenou identitou. Tato politika bude implementována během roku 2026 ve vybraných zemích (jihovýchodní Asie, Brazílie) a od roku 2027 celosvětově.

    Fluttershy, yay! | Komentářů: 7
    27.8. 13:11 | Nová verze

    Byla vydána nová verze 21.1.0, tj. první stabilní verze z nové řady 21.1.x, překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, LLD, Extra Clang Tools a Libc++.

    Ladislav Hagara | Komentářů: 0
    27.8. 05:11 | Komunita

    Alyssa Anne Rosenzweig v příspěvku na svém blogu oznámila, že opustila Asahi Linux a nastoupila do Intelu. Místo Apple M1 a M2 se bude věnovat architektuře Intel Xe-HPG.

    Ladislav Hagara | Komentářů: 18
    26.8. 12:55 | IT novinky

    EU chce (pořád) skenovat soukromé zprávy a fotografie. Návrh "Chat Control" by nařídil skenování všech soukromých digitálních komunikací, včetně šifrovaných zpráv a fotografií.

    Ladislav Hagara | Komentářů: 73
    26.8. 12:11 | Nová verze

    Byly publikovány fotografie a všechny videozáznamy z Python konference PyCon US 2025 proběhlé v květnu.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (79%)
     (9%)
     (3%)
     (4%)
     (5%)
     (1%)
    Celkem 104 hlasů
     Komentářů: 9, poslední včera 11:53
    Rozcestník

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

    10.8.2007 11:47 | Přečteno: 5117× | 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.