Voici plusieurs jours que je bataille avec un problème rencontré lorsque je souhaite supprimer un éléments d'un Fichier XML.
J'utilise la fonction externe _XMLDomWrapper_.au3 pour gérer un fichier XML.
Mon code fonctionne très bien semble t-il et la pluspart des suppressions se passent très bien également,
Cependant des fois, sans raison, un élément ne peut être supprimé car un message d'erreur s'affiche. (ci-dessous)
Pour info, l'élément est bien supprimé, donc le script supprime bien l'élément,
Message d'erreur :
Line 1185 (Fil...)
Func _XMLGetChildNodes($strPath)
Func _XMLGetChildNodes($strPath)^ERROR
Error : Array variable has incorrect number of subscripts or subscript dimension range exceeded.
Mon fichier XML :
Code : Tout sélectionner
<Secteur30>
<C0103Keldervoircom> <Nom>En att 01.03 B Kelder(voir com)</Nom>
<Type>B</Type>
<Cree>2014/01/29 10:28:41</Cree>
<Att> </Att>
</C0103Keldervoircom>
</Secteur30>
Mon ptit bout de code :
Code : Tout sélectionner
_XMLDeleteNode("/Suivi/Secteur" & $TEMP & "/" & _XMLGetChildNodes("/Suivi/Secteur" & $TEMP)[$i]) ; Suppression du dossier
Le code de la fonction _XMLDomWrapper_.au3 :
Code : Tout sélectionner
; #FUNCTION# ===================================================================
; Name ..........: _XMLGetChildNodes
; Description ...: Selects XML child Node(s) of an element based on XPath input from root node.
; Syntax.........: _XMLGetChildNodes($strXPath)
; Parameters ....: $strXPath - The xml tree path from root node (root/child/child..)
; Return values .: Success - An array of Nodes, count in [0] element.
; Failure - -1 and @error set to 1.
; Author ........: Stephen Podhajecki <gehossafats@netmdc.com>
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........;
; Example .......; [yes/no]
; ==============================================================================
Func _XMLGetChildNodes($strXPath)
If Not IsObj($objDoc) Then
_XMLError("No object passed to function _XMLGetChildNodes")
Return SetError(1, 20, -1)
EndIf
Local $objNodeList, $arrResponse[1], $xmlerr
$objNodeList = $objDoc.selectSingleNode($strXPath)
If Not IsObj($objNodeList) Then
_XMLError(@LF & "No Matching Nodes found")
$arrResponse[0] = 0
Return SetError(1, 0, -1)
EndIf
If $objNodeList.hasChildNodes() Then
For $objChild In $objNodeList.childNodes()
If $objChild.nodeType() = $NODE_ELEMENT Then
_DebugWrite($objChild.NamespaceURI & "::" & $objChild.baseName & @LF)
_XMLArrayAdd($arrResponse, $objChild.baseName)
EndIf
Next
$arrResponse[0] = UBound($arrResponse) - 1
Return $arrResponse
EndIf
$arrResponse[0] = 0
$xmlerr = @LF & "No Child Nodes found"
_XMLError("Error Selecting Node(s): " & $strXPath & $xmlerr)
Return SetError(1, 0, -1)
EndFunc ;==>_XMLGetChildNodes
Mais pour ma part, je bloque complet
Merci par avance,

