IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

Attributs d'une racine


Sujet :

XML/XSL et SOAP

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Novembre 2020
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Attributs d'une racine
    Bonjour à vous,

    Je suis actuellement en train de reproduire un document XML avec du VBA et à partir d'un tableau Excel (que si j'enregistre en XML, il n'est pas structuré correctement). J'ai déjà réalisé la première ligne du fichier XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="utf-8"?>
    Ainsi que quelques balises grâce à ce code ...

    Code VBA : 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
    Private Sub CommandButton1_Click()
     
    Dim Doc_XML As Object   'permet de créer le XML
    Dim Node As Object      'permet de créer les noeuds
    Dim Root As Object      'permet de créer la racine du XML
    Dim Chemin As String    'Chemin de sauvegarde
     
    Set Doc_XML = CreateObject("MSXML2.DOMDocument")    'Création du XML
     
    Set Node = Doc_XML.createProcessingInstruction("xml", "version=""1.0"" encoding=""utf-8""")
     
    Doc_XML.appendChild Node                            'Ajout des données au fichier
    Set Node = Nothing                                  'Remise à zéro du noeud
    Set Root = Doc_XML.CreateElement("SWOOMat")         'Création d'une racine
    Doc_XML.appendChild Root                            'Ajout de la racine au XML
    Root.appendChild Doc_XML.createTextNode(vbCrLf)
     
    Set Node = Doc_XML.CreateElement("Materials")       'Création d'un noeud
    Root.appendChild Node                               'Ajout du noeud à la racine
    'Node.Text = "Text 1"                                'Ajout d'un texte dans le noeud                                  'Remise à zéro du noeud
    Root.appendChild Doc_XML.createTextNode(vbCrLf)
     
    Set Node = Doc_XML.CreateElement("EdgeBands")       'Création d'un noeud
    Root.appendChild Node                               'Ajout du noeud à la racine
    'Node.Text = "Text 1"                                'Ajout d'un texte dans le noeud
    Set Node = Nothing                                  'Remise à zéro du noeud
    Root.appendChild Doc_XML.createTextNode(vbCrLf)
     
    Set Node = Doc_XML.CreateElement("EdgeBandsShapes") 'Création d'un noeud
    Root.appendChild Node                               'Ajout du noeud à la racine
    Node.Text = "Text 1"                                'Ajout d'un texte dans le noeud
    Set Node = Nothing                                  'Remise à zéro du noeud
    Root.appendChild Doc_XML.createTextNode(vbCrLf)
     
    Set Node = Doc_XML.CreateElement("EdgeBandsEndShapes") 'Création d'un noeud
    Root.appendChild Node                               'Ajout du noeud à la racine
    Node.Text = "Text 1"                                'Ajout d'un texte dans le noeud
    Set Node = Nothing                                  'Remise à zéro du noeud
    Root.appendChild Doc_XML.createTextNode(vbCrLf)
     
    Set Node = Doc_XML.CreateElement("Boards")         'Création d'un noeud
    Root.appendChild Node                               'Ajout du noeud à la racine
    Node.Text = "Text 1"                                'Ajout d'un texte dans le noeud
    Set Node = Nothing                                  'Remise à zéro du noeud
    Root.appendChild Doc_XML.createTextNode(vbCrLf)
     
    'Ajout de la partie attribut si tu le souhaite
     
    'Set Name = Doc_XML.CreateAttribute("Attrib")        'Création de l'attribut
    'Name.NodeValue = "Ce que tu veux"                   'Nommnation de l'attribut
    'Node.SetAttributeNode Name                          'Ajout de l'attribut au noeud
     
    If TextBox1 = "" Then
    MsgBox "Renseignez le nom que vous souhaitez attribuer au fichier"
    Else
    Chemin = ThisWorkbook.Path & "\" & TextBox1.Text & ".xml"  'Chemin de sauvegarde + Nom du fichier
    Doc_XML.Save Chemin                                 'Sauvegarde
    TextBox1 = ""
    End If
     
    End sub

    Ce que je n'arrive pas à faire premièrement c'est de mettre des attributs à la racine, la racine devant ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <SWOODMat xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1" xmlns="http://www.eficad.com//SWOODMat">
    Si quelqu'un peut m'aider à intégrer du code dans ce que j'ai fait pour la faire apparaître dans mon doc XML.

    Merci et bonne journée

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Pour ajouter xmlns:xsd, xmlns:xsi et Version, c'est très simple. Pour la déclaration xmlns="...", c'est plus compliqué parce qu'il s'agit une concept centrale (le namespace par défaut et sa propagation héritagère) et une réalization qui ont des impacts tout au long du code ...

    Voice une réécriture pour la partie débutée du code qui montre les essentiels ce qu'on doit faire ...
    Code VBA : 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
    'etc etc inchangés
     
    Const NODE_ELEMENT As Integer = 1
    Dim nsDefaultUrn As String = "http://www.eficad.com//SWOODMat"
     
    Set Doc_XML = CreateObject("MSXML2.DOMDocument")
     
    Set Node = Doc_XML.createProcessingInstruction("xml", "version=""1.0"" encoding=""utf-8""")
     
    Doc_XML.appendChild Node
    Set Node = Nothing
     
    'Set Root = Doc_XML.CreateElement("SWOOMat")
    Set Root=Doc_XML.CreateNode(NODE_ELEMENT, "SWOOMat", nsDefaultUrn)    'Important pour coder le namespace par défaut
     
    Root.setAttribute "xmlns:xsd", "http://www.w3.org/2001/XMLSchema"
    Root.setAttribute "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"
    Root.setAttribute "Version", "1"
     
    Doc_XML.appendChild Root
    Root.appendChild Doc_XML.createTextNode(vbCrLf)
     
    'Set Node = Doc_XML.CreateElement("Materials")
    Set Node = Doc_XML.CreateNode(NODE_ELEMENT, "Materials", nsDefaultUrn)    'Important pour le héritage du namespace
     
    Root.appendChild Node
    'Node.Text = "Text 1"
    Root.appendChild Doc_XML.createTextNode(vbCrLf)
     
    'Faire le même remplacer  toutes les CreateElement() dans le reste par CreateNode() de la même façon comme pour Materials...
     
    'etc ...

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Novembre 2020
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Merci pour votre aide, c'est très complet j'aurai du vous mettre une capture d'écran ça aurait été plus simple car le xmlns ne se répertorie pas partout je peux donc laisser le create element et cela fonctionne bien.

    Merci

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/01/2017, 20h16
  2. Modif des attributs d'une balise <param> en javascript
    Par Henri dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/08/2005, 22h20
  3. Réponses: 2
    Dernier message: 27/03/2005, 16h09
  4. [VB.NET] Parcourir les attributs d'une classe
    Par pasqwal dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/02/2005, 09h47
  5. Réponses: 7
    Dernier message: 08/01/2005, 13h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo