suppression d'une ligne dans un fichier XML EN VBA
Bonjour à tous,
Je rencontre des difficultés actuellement pour ouvrir un fichier xml, mon pb est le suivant :
je dois à partir d'excel traiter + sieurs fichiers "xml", jusqu'a présent tous se passe bien je charge mon document , je l'ouvre et je récupère les données dans les balises.
Mais le probleme est qu' a ma 3eme ligne il y a une ligne qui fait que je n'arrive pas exploiter mon fichier xml.!!!
si je supprime cette ligne manuellement et que j'enregistre mon fichier alors tous se passe corectement par contre si la ligne n'est pas suprimer le fichier ne peut pas etre exploiter.
Quelqu'un aurait-il une solution pour supprimer la 3eme ligne automatiquement de mon fichier XML, pour qu'il puisse etre exploitable????
Merci.
En VBA
je vous envois le code qui permet d'exploiter le fichier xml.
Code:
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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| Sub IMPORT_XML_File()
'Déclaration des Variables et des objets DOMXML
Dim ParsDoc As MSXML2.DOMDocument
Dim ListeEnfants_de_md As MSXML2.IXMLDOMNodeList
Dim ListeEnfants_de_mi As MSXML2.IXMLDOMNodeList
Dim ListeEnfants_de_mv As MSXML2.IXMLDOMNodeList
Dim Liste_md As MSXML2.IXMLDOMNodeList
Dim Noeud_mi As MSXML2.IXMLDOMNode
Dim Noeud_mts As MSXML2.IXMLDOMNode
Dim Noeud_gp As MSXML2.IXMLDOMNode
Dim Noeud_mt As MSXML2.IXMLDOMNode
Dim Noeud_mv As MSXML2.IXMLDOMNode
Dim Noeud_moid As MSXML2.IXMLDOMNode
Dim Noeud_r As MSXML2.IXMLDOMNode
Dim Noeud_md As MSXML2.IXMLDOMNode
'**********noeud de la ligne 3 à supprimer...***************
Dim Noeud_line3 As String
'Dim Noeud3 As MSXML2.IXMLDOMDocumentType
Dim Noeud3 As MSXML2.IXMLDOMNotation
Dim N3 As MSXML2.IXMLDOMNode
'*****************************************
Dim Enfants_de_md As MSXML2.IXMLDOMNode
Dim Enfants_de_mi As MSXML2.IXMLDOMNode
Dim Enfants_de_mv As MSXML2.IXMLDOMNode
Dim racine_mdc As MSXML2.IXMLDOMNode
Dim Objet_Erreur As MSXML2.IXMLDOMParseError
Dim intI As Integer
Dim Nom_moid As String
Dim file_xml As String
Dim objet_node As String
Dim data As String
'permet de ne pas voir se qui se passe
Application.ScreenUpdating = False
'Pour nettoyer les cellules à chaque renouvellement du programme
'Worksheets("IMPORT_XML").Activate
'Cells.ClearContents
file_xml = Worksheets("Sheet1").Cells(15, 5).Value
' au dessus il y a la celluel qui donne le chemin d'acces à mon fichier xml
' mettre en commentaire la ligne du dessus, puis mettre en argument de la fonction.
'Initialisation du Parseur
'la fonction permet de faire la référence entre la variable et le DOC_XML
Set ParsDoc = New MSXML2.DOMDocument
'Chargement du Document de manière synchrone
ParsDoc.async = False
'on charge le document en mémoire
If ParsDoc.Load(file_xml) Then
MsgBox "Document XML correctement chargé"
Else
'****************************supression de la ligne 3 des XML Files...*************************
'Noeud_line3 = ParsDoc.Xml
'MsgBox (Noeud_line3)
'MsgBox (objet_node)
'data = "<!DOCTYPE mdc SYSTEM "MeasDataCollection.dtd">"
'Set Noeud3 = ParsDoc.createCDATASection(<![DOCTYPE mdc SYSTEM ["MeasDataCollection.dtd"]]>)
'data = Noeud3.baseName
'Set Noeud3 = ParsDoc.doctype
'data = Noeud3.nodeTypedValue
'MsgBox (data)
'********************************************************************************************
MsgBox "Erreur de lecture du document XML"
' ****************************
' ******************Partie concernant la gestion des erreurs**********************
'instancier le fichier xml pour la gestion des erreurs
Set Objet_Erreur = ParsDoc.parseError
' contient le code de l'erreur da la dernière erreur d'analyse, en lecture seule.
code = Objet_Erreur.errorCode
MsgBox (code)
'fournit une explication à propos de l'erreur, en lecture seule.
raison = Objet_Erreur.reason
MsgBox (raison)
'contient la position du fichier absolue où l'erreur s'est produite, en lecture seule.
position_fichier = Objet_Erreur.filepos
MsgBox (position)
'spécifie le numéro de la ligne contenant l'erreur, en lecture seule.
position_ligne = Objet_Erreur.Line
MsgBox (position_ligne)
'contient la position du caractère à l'intérieur de la ligne où l'erreur s'est produite, en lecture seule.
Position_carac_ligne = Objet_Erreur.linepos
MsgBox (Position_carac_ligne)
'retourne le texte complet de la ligne contenant l'erreur, en lecture seule.
chaine = Objet_Erreur.srcText
MsgBox (chaine)
'contient l'adresse URL du document XML contenant la dernière erreur, en lecture seule.
adr_url = Objet_Erreur.URL
MsgBox (adr_url)
' ****************************************
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
end sub |
debut de mon fichier XML
Code:
1 2 3 4
| <?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
<!DOCTYPE mdc SYSTEM "MeasDataCollection.dtd">
**************la ligne a suprimer ce trouve au dessus*********** |
suprimer 1 ligne d'un fichier xml
Bonjour quelqu'un aurait-il une idée pour suprimer une ligne d'un fichier xml en vba j'utilise le DOMXML mais je ne trouve pas comment.
il ne s'agit pas d'un noeud mais d'une ligne qui fait référence à une dtd.
pourtant quand je supprime manuellement la ligne j'exploite mon fichier sans pb.
merci