VBA et XML, set Attribute

VBA et XML, set Attribute - VB/VBA/VBS - Programmation

Marsh Posté le 13-07-2012 à 09:33:28    

Bonjour,
 
j'ai un pb sur lequel je bute depuis un moment déjà.
 
Je souhaite copier un node dans un node croupion, modifier un attribut du node croupion, et le copier dans un document DOM. un bout de code vaut mieux que de longs discours :D :
 
code:
 
Sub storeNode()
      Dim oDocPath As String
      Dim oDoc As DOMDocument
      Dim SingleNode As MSXML2.IXMLDOMElement
      Dim singleCroupion As MSXML2.IXMLDOMElement
      Dim i, j As Integer
 
      oDocPath = "C:\...\test.xml"
 
 
       
       'CREATE A DOM DOCUMENT OBJECT
      Set oDoc = New DOMDocument
       
      'Load the temporary file
      oDoc.async = False            'the doc needs to be loaded into the DOMdoc synchronously: therefore, we put false here
      oDoc.Load oDocPath
      Dim toto As Boolean
      toto = False
       
      For Each SingleNode In oDoc.getElementsByTagName("item" )
            If SingleNode.getAttribute("empty" ) = "true" Then
                 Set singleCroupion = SingleNode
                 MsgBox singleCroupion.getAttribute("code" )
            End If
 
      Next
 
      singleCroupion.setAttribute("x", "y" ) = "y" 'Et boom! une erreur :kaola:  
      Set oDoc2 = New DOMDocument
      Dim oNode
      Set oNode = oDoc2.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'" )
      Set oNode = oDoc2.InsertBefore(oNode, oDoc2.ChildNodes.Item(1))
      Set singleCroupion = oDoc2.appendChild(singleCroupion)
      oDoc2.Save "C:\..\outtest.xml"
       
    '...
 
End Sub
 
 
L'instruction setAttribute bloque, quel que soit la syntaxe :fou: :
 singleCroupion.setAttribute("x", "y" ) = "y"
 singleCroupion.setAttribute("x" ) = "y"
 singleCroupion.setAttribute("x", "y" )
 
merci d'avance de vos suggestions!
 
Possum3D :hello:

Reply

Marsh Posté le 13-07-2012 à 09:33:28   

Reply

Marsh Posté le 13-07-2012 à 22:07:55    

Stp met les balises

Code :
  1. autour du code pour une meilleur lisibilité
  2. D'après la doc http://msdn.microsoft.com/en-us/li [...] 85%29.aspx
  3. c'est la syntaxe
  4. [code]
  5. singleCroupion.setAttribute("x","y" )


 
C'est quoi le message d'erreur ?
Je pense que le pb peut venir du fait que singleCroupion n'est peut être pas "setté" (il suffit que le If SingleNode.getAttribute("empty" ) = "true" then ne trouve rien)
Pour moi le code n'est pas bon :

Code :
  1. if Not singleCroupion is nothing then
  2.       singleCroupion.setAttribute("x", "y" )
  3.       Set oDoc2 = New DOMDocument
  4.       Dim oNode
  5.       Set oNode = oDoc2.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'" )
  6.       Set oNode = oDoc2.InsertBefore(oNode, oDoc2.ChildNodes.Item(1))
  7.       Set singleCroupion = oDoc2.appendChild(singleCroupion)
  8.       oDoc2.Save "C:\..\outtest.xml"
  9. end if


Message édité par dreameddeath le 13-07-2012 à 22:11:42
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed