Toon posts:

[PHP] XML functie binnen class

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het schrijven van een XML parser. Alleen wil even iets niet lukken...

Om XML te parsen heb je dus onder andere deze 2 functies:
xml_set_element_handler() en xml_set_character_data_handler()...

nu is dus het 2e argument van deze functie de functie die de parser moet aanroepen als ie een element (of character data) tegenkomt. Deze wil ik laten verwijzen naar een functie binnen de class die ik aan het schrijven ben...

$this->start_element()... maar t lukt niet helemaal. Ik heb nu dit:

PHP:
1
2
3
4
5
  $this->xml_parser = xml_parser_create();
  $this->debug_messages .= "XML Parser created\n";

  xml_set_element_handler($this->xml_parser, "\$this->start_element", "\$this->end_element");
  xml_set_character_data_handler($this->xml_parser, "\$this->character_data");


Maar dit werkt dus niet... ik het ook al alleen "start_element" geprobeerd, werkt dus ook niet.

Hoe los ik dit op :?

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
Het werkt niet. Wat werkt niet? Krijg je een foutmelding? Wat gebeurt er? etc....

Welkom in P&W -> Quickstart (update 2/10/2002)

https://fgheysels.github.io/


Verwijderd

Topicstarter
okay... sorry :) dom van me...

Warning: Unable to call handler $this->start_element() in /usr/local/apache/htdocs/xxx_01/Standaardscripts/xml_parser.class.php on line 68

Warning: Unable to call handler $this->character_data() in /usr/local/apache/htdocs/xxx_01/Standaardscripts/xml_parser.class.php on line 68

en dan dat ongeveer 50x onder elkaar...

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 08 oktober 2002 @ 09:38:
okay... sorry :) dom van me...

Warning: Unable to call handler $this->start_element() in /usr/local/apache/htdocs/xxx_01/Standaardscripts/xml_parser.class.php on line 68

Warning: Unable to call handler $this->character_data() in /usr/local/apache/htdocs/xxx_01/Standaardscripts/xml_parser.class.php on line 68

en dan dat ongeveer 50x onder elkaar...
Op zich toch logisch?

Want wanneer word dit uit gevoerd? Dit word elke keer uitgevoerd als er een start_element of een character data gevonden wordt. Maar op dat moment ben je niet meer binnen de scope van het object bezig. Dus $this is niet meer geldig.

Maar PHP zou PHP niet zijn als er een aantal oplossing voor zouden zijn.
Oplossing 1:
www.php.net/xml_set_object (voorbeeld zegt genoeg)
Oplossing 2:
PHP:
1
  xml_set_element_handler($this->xmlparser, array(&$this,"start_element"), array(&$this,"end_element"));

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
perrrrrfectos!
die array() werkt...

Hartstikke bedankt!!