Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML] .xml i wydobycie wartosci jednego elementu
Forum PHP.pl > Forum > XML, AJAX > XML
PrzeoR
Witam,

Jestem początkujący ogolnie php i tak na dobra sprawe praktycznie nie jestem jeszcze obeznany w temacie ...

Otóż mam oto taki problem:
  1. <?php
  2.  
  3. $file ="include.xml";
  4.  
  5.  
  6. function startElement($parser, $name, $attrs) {
  7. print "<B>name =></B> ";}
  8.  
  9. print "";
  10.  
  11. function endElement($parser, $name) {
  12.  print "n";
  13. }
  14.  
  15.  
  16. function characterData($parser, $value) {
  17.  print "$value <br>";
  18. }
  19.  
  20.  
  21. $simpleparser = xml_parser_create();
  22. xml_set_element_handler($simpleparser, "startelement", "endElement");
  23. xml_set_character_data_handler($simpleparser, "characterData");
  24.  
  25. if (!($fp = fopen($file, "r"))) {
  26. die ("nie moge otworzyć pliku XML");
  27. }
  28.  
  29.  
  30.  
  31. while($data = fread($fp, filesize($file))) {
  32. if (!xml_parse($simpleparser, $data, feof($fp))) {
  33. die(xml_error_string(xml_get_error_code($simpleparser)));
  34. }
  35. }
  36.  
  37.  
  38. xml_parser_free($simpleparser);
  39.  
  40. ?>


Posiadam taki kod php tutaj znajdziecie rezultat tego kodu:
http://www.przeor.com/myphp/
a tutaj plik xml http://www.przeor.com/myphp/include.xml

otóż

potrzebuję wydobyć wartość z elementu BID, trudzę się już z tym ponad 2 dni i nie umię znaleźć rozwiązania jak to zrobić, odrazu odrzucam możliwości użycjia punkcji do php 5 ...

Mam nadzieje, że znajdzie się osoba na tym forum , która jest mi w stanie pomóc rolleyes.gif

Pozdrawiam
bela
Najłatwiej odkładać na stosie nazwy elementów przy startElement, a zdejmować je przy endElement. W charData sprawdzać ostatni element stosu i jeśli jest on bid, to go wydrukować.

array" title="Zobacz w manualu php" target="_manual php ma stos wbudowany praktycznie.
PrzeoR
nic mi to nie mowi ale sproboje znaleźć, może ktoś może dać przykład tutaj ?
bela
  1. <?php
  2.  
  3. class ConfigParser {
  4.  
  5. private $parser;
  6.  
  7. private $tagStack = array();
  8.  
  9.  
  10.  
  11. public function __construct() {
  12.  
  13. $this->parser =& xml_parser_create();
  14.  
  15. xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
  16.  
  17. xml_parser_set_option($this->parser, XML_OPTION_SKIP_WHITE, 1);
  18.  
  19. xml_set_object($this->parser, & $this);
  20.  
  21. xml_set_element_handler($this->parser, 'startElement', 'endElement');
  22.  
  23. xml_set_character_data_handler($this->parser, 'characters');
  24.  
  25. $inputText = file_get_contents('config.xml');
  26.  
  27. if (xml_parse($this->parser, $inputText, true) == false) {
  28.  
  29. dump(xml_error_string(xml_get_error_code($this->parser) ) );
  30.  
  31. }
  32.  
  33. xml_parser_free($this->parser);
  34.  
  35. }
  36.  
  37.  
  38.  
  39. private function startElement($parser, $name, $atributes) {
  40.  
  41. array_push($this->tagStack, $name);
  42.  
  43. stackDump($this->tagStack);
  44.  
  45. }
  46.  
  47.  
  48.  
  49. private function endElement($parser, $name) {
  50.  
  51. $tag = $this->tagStack[count($this->tagStack) - 1];
  52.  
  53. array_pop($this->tagStack);
  54.  
  55. }
  56.  
  57.  
  58.  
  59. private function characters($parser, $data) {
  60.  
  61. $stackSize = count($this->tagStack);
  62.  
  63. if($stackSize == 0) {
  64.  
  65. return;
  66.  
  67. }
  68.  
  69. $tag = $this->tagStack[$stackSize - 1];
  70.  
  71. }
  72.  
  73. }
  74.  
  75.  
  76.  
  77. function dump($dump) {
  78.  
  79. print('<pre>');
  80.  
  81. var_dump($dump);
  82.  
  83. print('</pre>');
  84.  
  85. }
  86.  
  87.  
  88.  
  89. function stackDump($stack) {
  90.  
  91. foreach($stack as $v) {
  92.  
  93. print('&lt;' . $v . '&gt;');
  94.  
  95. }
  96.  
  97. print '<br/>';
  98.  
  99. }
  100.  
  101.  
  102. ?>
PrzeoR
Niestety taki błąd zastałem
  1. <?php
  2. Parse error: parse error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/przeor/public_html/myphp/index.php on line 5
  3. ?>

?
bela
Zainstaluj PHP5.
Poza tym nie uruchamiaj kodu a go przeanalizuj.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.