ugrás a tartalomhoz

Xml-ben egy addott tag előfordulásának megszámolása.

Anonymous · 2006. Jún. 27. (K), 22.20
Üdv!

LEnne egy kis problémám:

írtam egy xml kezelőt:
  1. <?php  
  2.   
  3. $parser = xml_parser_create();  
  4.   
  5. xml_set_element_handler($parser"start_handler""end_handler");  
  6.   
  7. xml_set_character_data_handler($parser"character_handler");  
  8.   
  9. xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);  
  10.   
  11. $xml = file_get_contents("stat.xml");  
  12.   
  13. xml_parse($parser$xml);  
  14.   
  15. xml_parser_free($parser);  
  16.   
  17. function start_handler($parser$tag$type) {  
  18.   
  19. }  
  20.   
  21. function end_handler($parser$tag) {  
  22.   
  23. }  
  24.   
  25. function character_handler($parser$text) {  
  26.   
  27. }  
  28.   
  29. ?>  
Nos az a bajom hogy van egy olyan a <stat> tagen belül hogy <players>
és azon belül ha minél több játékos van akkor minnél több <player> tag, és én ezt szeretném megszámolni, de hogyan?

ezt próbáltam de nem jött be

function start_handler($parser, $tag, $type) {
while ($tag == "player") {
$a++;
}
print $a;
}
 
1

Nem kell ciklus

vbence · 2006. Jún. 27. (K), 23.23
Nem néztem most utána, de úgylátom, te SAX parser-t használsz. Itt nem kell ciklus, kell egy globális változó, amit növelsz a start_handler fv-ben. Pl:
  1. function start_handler($parser$tag$type) {  
  2.     global $a;  
  3.     if ($tag == "player") {  
  4.         $a++;  
  5.     }  
  6. }  
majd a "főprogramban" a xml_parse($parser, $xml); sor után megvizsgálod a $a-t, és lőn..
2

Esetleg DOM

Jano · 2006. Jún. 27. (K), 23.44
DOM-ban erre lenne a playersNode.getElementsByTagName("player").
3

Köszi...

Anonymous · 2006. Jún. 28. (Sze), 00.17
Ok, kössz a megdolást működött a global-al

Kössz még1x.