Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.05.07
Prihlásený: 23.07.19
Príspevky: 420
Témy: 151
Príspevok NapísalOffline : 20.01.2011 16:53

ahojte,

na linuxsofte som našiel články o spracovani XML súboru pomocou PHP. Zadania sú asi takéto:

XML súbor
Kód:
<?xml version="1.0" encoding="UTF-8"?>
<FINANCE>
  <PRIJMY>
    <PRIJEM id="1">
      <NAZEV>Plat</NAZEV>
      <CASTKA>12000</CASTKA>
    </PRIJEM>
    <PRIJEM id="2">
      <NAZEV>Články na Linuxsoft</NAZEV>
      <CASTKA>3000</CASTKA>
    </PRIJEM>
  </PRIJMY>
  <VYDAJE>
    <VYDAJ id="1">
      <NAZEV>Byt</NAZEV>
      <CASTKA>4500</CASTKA>
    </VYDAJ>
    <VYDAJ id="2">
      <NAZEV>Jídlo</NAZEV>
      <CASTKA>2500</CASTKA>
    </VYDAJ>
    <VYDAJ id="3">
      <NAZEV>Koníčky</NAZEV>
      <CASTKA>1500</CASTKA>
    </VYDAJ>
  </VYDAJE>
</FINANCE>


php skript potom vyzerá takto
Kód:
<?
  $nas_soubor="./finance.xml";

  //co se má stát, když narazíme na počáteční a koncovou značku
  function PocatecniZnacka ($parser, $nazev, $atributy)
  {
    echo "Narazil jsem při čtení na značku $nazev s atributy:"."<BR>";
    echo print_r($atributy)."<BR>";
  }

  function KoncovaZnacka ($parser, $nazev) {}
 
  // fáze 1) instance parseru
  $nas_parser=xml_parser_create();
 
  // fáze 2) řekneme parseru, co má udělat když se dostane k
  // počáteční značce
  xml_set_element_handler ($nas_parser, "PocatecniZnacka", "KoncovaZnacka");
 
  // fáze 3) vlastní čtení souboru, práce s ním a ukončení parseru
  if (!($obsahsouboru = fopen($nas_soubor, "r")))
    die("Nemohu otevřít XML pro čtení.");

  while ($data = fread($obsahsouboru, 5))
    xml_parse($nas_parser, $data, feof($obsahsouboru));

  xml_parser_free($nas_parser);
?>


to čo ma trápi je vec, že sa v tom skripte pracuje s premennými $parser, $nazev, $atributy, pričom tie tam nie sú nikde definované (je tam akurát nas_parser), a ani mi nejak neprídu že by vyplývali z toho XML dokumentu.

Pozeral som sa do mnohých návodov na XML, avšak bohužial sa o tom nikto nezmienoval, ako to vlastne funguje

budem teda rad za každú radu


Offline

Čestný člen
Čestný člen
začiatočnicka otázka k spracovaniu XML

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 20.01.2011 17:09

Fciou xml_set_element_handler urcis, ze pri najdeni otvaracieho tagu v dokumente sa zavola fcia PocatecniZnacka, a to s troma argumentami, ktore su tak pomenovane. O tom, ake argumenty prijimaju fcie ("handlery"), ktore handluju najdenie pociatocnej a koncovej znacky, sa docitas v dokumentacii. http://sk.php.net/xml_set_element_handler


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.05.07
Prihlásený: 23.07.19
Príspevky: 420
Témy: 151
Príspevok Napísal autor témyOffline : 20.01.2011 20:46

z dokumentácie: "The first parameter, parser, is a reference to the XML parser calling the handler."

to by potom musela ta fcia vyzerať takto:

function PocatecniZnacka ($nas_parser...

nie?

okrem toho vravíš, že "s troma argumentami, ktore su tak pomenovane", ale ja nevidím kde sú pomenované, oni sú spomenuté u tej funkcie, ale tá ich predsa musí odniekiaľ vziať; ako može vedieť čo to znamená taká premenná $nazev.

proste chápal by som, keby bolo niekde nadefinované, že premenna nazev = taky a onaky tag z xml dokumentu; ale to nikde neni


Offline

Čestný člen
Čestný člen
začiatočnicka otázka k spracovaniu XML

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 20.01.2011 21:39

Obavam sa, ze nerozumies, ako pracuju fcie. Trochu odbocme od XML, predstav si fciu, ktora vracia dajme tomu dvojnasobok zadaneho argumentu:
Kód:
function dvojnasobok($n)
{
   return $n * 2;
}
To ale neznamena, ze kazda premenna, ktoru budeme podstrkavat ako parameter tejto fcie, sa musi tiez volat $n ako parameter:
Kód:
$x = 5;
echo dvojnasobok($x);
Takisto v tvojom priklade s XML - argument sa nazval $parser, tak vnutri tela fcie sa pracuje s $parser ($n v mojom kode), ale nic to nehovori o tom, ako sa bude volat samotna premenna s instanciou toho XML parsera ($x v mojom kode).

Ujasni si prosim, ako funguju zakladne prvky programovacich jazykov predtym, ako zacnes robit nieco zlozitejsie.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.05.07
Prihlásený: 23.07.19
Príspevky: 420
Témy: 151
Príspevok Napísal autor témyOffline : 21.01.2011 9:31

ďakujem. už chápem tomu, ako pracuje funkcia. lenže v tom kode z linuxsoftu práve chýba tá časť, ktorú si vo svojom príklade označil takto:

"$x = 5;
echo dvojnasobok($x);"

proste funkcia je nadefinovaná, potom je volaná ako start element handler, ale volaná je iba pomocou "xml_set_element_handler ($nas_parser, "PocatecniZnacka"..."

není tam napr. "xml_set_element_handler ($nas_parser, PocatecniZnacka($x, $y, $z)..." pričom x, y, z by boli niekde definované.

toto mi vrta hlavou. nepochybujem, že je ten kod správny, akurát mi robí problém to pochopiť

dakujem ti, že sa tu so mnou otravuješ


Offline

Správca fóra
Správca fóra
začiatočnicka otázka k spracovaniu XML

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 21.01.2011 10:25

hodnoty argumentov sa do funkcie PocatecniZnacka() vkladaju automaticky... ked sa napr. spracovava riadok <PRIJEM id="1">, tak $nazev obsahuje PRIJEM a $atributy zrejme pole id => 1







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.05.07
Prihlásený: 23.07.19
Príspevky: 420
Témy: 151
Príspevok Napísal autor témyOffline : 21.01.2011 17:16

aha. jasné. to som si všimol, že ked som skript vykonal tak že sa mi ukázalo to čo hovoríš, ale nechápal som prečo. dík za vysvetlenie;


Odpovedať na tému [ Príspevkov: 7 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. otazka na parsovanie xml v php

v PHP, ASP

12

731

17.03.2010 14:53

Broko71 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Generovanie XML:Chybná analýza XML: žiadny prvok sa nenašiel

v HTML, XHTML, XML, CSS

1

874

16.12.2011 16:49

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. XML Schema => XML instance document

v HTML, XHTML, XML, CSS

0

726

02.11.2009 17:46

sINN3r Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. xml

v HTML, XHTML, XML, CSS

1

768

02.04.2009 13:38

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. XML kodovanie

v HTML, XHTML, XML, CSS

10

1266

10.05.2023 13:48

jojo46 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. xml pomoc

v PHP, ASP

6

700

17.07.2009 23:15

p360t Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. xml parser

v PHP, ASP

2

612

29.04.2009 16:10

Draex Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. porovnanie XML

v Ostatné programy

2

566

17.05.2016 0:41

lenuska320 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Parsovanie XML

v Assembler, C, C++, Pascal, Java

1

395

04.06.2012 10:40

Siriuse Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. XML parse

v PHP, ASP

2

532

09.09.2010 8:47

Antuanet Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nevalidné XML

v HTML, XHTML, XML, CSS

6

809

18.10.2009 9:02

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Generovanie xml

v PHP, ASP

2

590

06.11.2010 9:57

NikonD5000 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. uprava xml

v HTML, XHTML, XML, CSS

4

755

01.07.2009 11:59

Romanko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. XML export

v PHP, ASP

22

1115

25.01.2010 16:49

Miko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. xml vystup

v PHP, ASP

6

578

21.08.2008 16:07

MKI-Miro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. parsovanie xml

v PHP, ASP

1

435

22.10.2011 19:13

chrono Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra