Bonjour,

je débute en php et j'aimerais parser un fichier xml afin d'insérer son contenu dans une BDD.
Malheureusement je me suis heurté à un problème dont je n ai trouvé la solution nulle part.
Je parse le fichier XML disponible par une url bien précise, je le parcours , je mets les infos dans un tableau, jusque là tout se passe bien , mais au moment d'arriver à une balise de type :

<row typeID="3436" skillpoints="250" level="1" />

il m'appelle la fonction de balise fermante "function endElement($parser, $name)" donc je ne peux pas accéder aux attributs de cette balise

Voila le code en question (il est pas tres propre , mais je débute ^^)

Ha et je tourne en php4

Merci d'avance !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
<?
 
 
$fp = fopen("http://api.eve-online.com/char/CharacterSheet.xml.aspx?characterID=701567533&userid=2128249&apikey=UDV5n0UMpIvta0ghPgO5hKew3gwnxSyTvI3EIOXDSf3mVBHwpxZFeG3fxQzT2iLW","r");
$xml_parser=xml_parser_create();
$perso=array();
 
 
// Définitions des fcts utilisées lors de la présence d'un élément ( 2 fcts , open et close) ou d'une donnée (data)
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
 
function startElement($parser, $name, $attrs)
{
global $perso;
global $position;
 
$position = $name;
 
}
 
function characterData($parser, $data)
{
 
global $position;
global $perso;
 
if($position =="CORPORATIONNAME")
{
if(!($data=="\n")) $perso["CORPO"] = $data;
 
}
if($position =="NAME" || $position =="RACE" ||$position =="BLOODLINE" ||$position =="GENDER" ||$position =="BALANCE" || $position =="INTELLIGENCE" || $position =="MEMORY" || $position =="CHARISMA" || $position =="PERCEPTION" || $position =="WILLPOWER" )
{
 
if(!($data=="\n")) $perso[$position] = $data;
 }
 
 
 
}
 
function endElement($parser, $name)
{
 echo $name.'<br>';
}
 
 
if ($fp)
{
 
 
while ($data = str_replace("\n","",fread($fp, 4096)))
{
 if ( !xml_parse($xml_parser, $data, feof($fp)) )
 {
  $err=1;
  break;
 }
 
}
 xml_parser_free($xml_parser);
 
echo 'Infos perso<br>';
echo 'Name : '.$perso["NAME"];
echo '<br>';
echo 'Race : '.$perso["RACE"];
echo '<br>';
echo 'Bloodline : '.$perso["BLOODLINE"];
echo '<br>';
echo 'Gender : '.$perso["GENDER"];
echo '<br>';
echo 'Corpo : '.$perso["CORPO"];
echo '<u><br> Attributs : <br></u>';
echo 'Intelligence : '.$perso["INTELLIGENCE"];
}
 
?>