[ Príspevkov: 7 ] 
AutorSpráva
Offline

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

Registrovaný: 01.05.07
Prihlásený: 14.04.17
Príspevky: 413
Témy: 150 | 150

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: 4110
Témy: 30 | 30
Bydlisko: Brno

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ý: 14.04.17
Príspevky: 413
Témy: 150 | 150
Napísal autor témyOffline : 20.01.2011 20:46 | začiatočnicka otázka k spracovaniu XML

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: 4110
Témy: 30 | 30
Bydlisko: Brno

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ý: 14.04.17
Príspevky: 413
Témy: 150 | 150
Napísal autor témyOffline : 21.01.2011 9:31 | začiatočnicka otázka k spracovaniu XML

ď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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32

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


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

Registrovaný: 01.05.07
Prihlásený: 14.04.17
Príspevky: 413
Témy: 150 | 150
Napísal autor témyOffline : 21.01.2011 17:16 | začiatočnicka otázka k spracovaniu XML

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;


 [ Príspevkov: 7 ] 


začiatočnicka otázka k spracovaniu XML



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

538

17.03.2010 14:53

Broko71

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

370

16.12.2011 16:49

Ďuri

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

XML Schema => XML instance document

v HTML, XHTML, XML, CSS

0

393

02.11.2009 17:46

sINN3r

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

xml

v HTML, XHTML, XML, CSS

1

513

02.04.2009 13:38

Tominator

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

Nevalidné XML

v HTML, XHTML, XML, CSS

6

538

18.10.2009 9:02

Ďuri

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

Generovanie xml

v PHP, ASP

2

324

06.11.2010 9:57

NikonD5000

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

porovnanie XML

v Ostatné programy

2

150

17.05.2016 0:41

lenuska320

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

uprava xml

v HTML, XHTML, XML, CSS

4

538

01.07.2009 11:59

Romanko

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

XML export

v PHP, ASP

22

753

25.01.2010 16:49

Miko

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

xml vystup

v PHP, ASP

6

393

21.08.2008 16:07

MKI-Miro

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

parsovanie xml

v PHP, ASP

1

218

22.10.2011 19:13

chrono

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

XML kodovanie

v HTML, XHTML, XML, CSS

9

826

03.06.2009 12:31

Blackshadow

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

xml pomoc

v PHP, ASP

6

484

17.07.2009 23:15

p360t

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

xml parser

v PHP, ASP

2

377

29.04.2009 16:10

Draex

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

Parsovanie XML

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

1

190

04.06.2012 10:40

Siriuse

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

XML parse

v PHP, ASP

2

357

09.09.2010 8:47

Antuanet



© 2005 - 2017 PCforum, edited by JanoF