Problème XML : Invalid memory access, Bug ?
Publié : dim. 28/déc./2008 23:55
Bonjour,
J'ai un soucis avec le XML, lors de l'appel de la fonction XMLAttributeValue() j'obtiens la bonne valeur, une valeur aléatoire, rien ou le plus souvent Invalid memory access.
Est-ce que je l'utilise mal ou est-ce que c'est un bug ?
J'ai un soucis avec le XML, lors de l'appel de la fonction XMLAttributeValue() j'obtiens la bonne valeur, une valeur aléatoire, rien ou le plus souvent Invalid memory access.
Est-ce que je l'utilise mal ou est-ce que c'est un bug ?
Code : Tout sélectionner
Procedure AnalyseXML(*XML.i, Recherche.s)
Define *Fils.i
If XMLNodeType(*XML) = #PB_XML_Normal
; On cherche l'attribut voulu
If LCase(GetXMLNodeName(*XML)) = Recherche
Debug "Recherche : " + Recherche
; *****************************
; Plante ici !!!!!!!!!
; *****************************
Debug "Attribut : " + XMLAttributeValue(*XML)
EndIf
; Si il y a un noeud fils, on recommence
*Fils = ChildXMLNode(*XML)
While *Fils <> 0
AnalyseXML(*Fils, Recherche)
*Fils = NextXMLNode(*Fils)
Wend
EndIf
EndProcedure
Procedure.i ChargerXML(*Buffer.i, Len.i)
Define XML.i
; On charge le fichier XML
XML = CatchXML(#PB_Any, *Buffer, Len)
If XML
If XMLStatus(XML) <> #PB_XML_Success
MessageRequester("Erreur", "Erreur XML :" + Chr(13) + "Message: " + XMLError(XML) + Chr(13) + "Ligne: " + Str(XMLErrorLine(XML)) + " Colonne: " + Str(XMLErrorPosition(XML)))
FreeXML(XML)
XML = 0
EndIf
EndIf
ProcedureReturn XML
EndProcedure
; "Fichier" XML
chaine.s = "<?xml version=" + Chr(34) + "1.0" + Chr(34) + " encoding=" + Chr(34) + "UTF-8" + Chr(34) + "?><rss xmlns:itunes=" + Chr(34) + "http://www.itunes.com/DTDs/Podcast-1.0.dtd" + Chr(34) + " version=" + Chr(34) + "2.0" + Chr(34) + "><channel><title>testazer</title></channel></rss>"
Len.i = Len(chaine)
*Buffer.i = AllocateMemory(Len)
PokeS(*Buffer, chaine)
Debug chaine
XML.i = ChargerXML(*Buffer, Len)
If XML
AnalyseXML(MainXMLNode(XML), "title")
Else
Debug "Impossible de charger"
EndIf