none
recupération des informations XML & Copier to excel Files RRS feed

  • Question

  • Bonjour a tous ,

    je cherche de récurer des informations XML , j'ai arrivé a récuper les attributs par contre les childrens ils ne sont pas récuper ci dessous mon code et la fome de mon fichier XML :

    [B]XML template :[/B]

    <?xml version="1.0" encoding="utf-8"?>
    <Root>
      <ToolsList>
        <Tool PartNumber="0018B">
          <ToolLine Text=" FI : 3897" />
          <ToolLine Text=" PINCE1 Reference : M 22520/2.01" />
          <ToolLine Text="    Position : 2.02" />
          <ToolLine Text="    Reglage : 7" />
          <ToolLine Text=" PINCE2 Reference: M 22520/7.01" />
        </Tool>
      </ToolsList>
    </Root>

    [B]Code C#:[/B]

    Imports System.IO
    Imports System.Xml
    Module ParsingUsingXmlDocument
        Sub Main()
            Try
                Dim m_xmld As XmlDocument
                Dim m_nodelist As XmlNodeList
                Dim m_node As XmlNode
                'Create the XML Document
                m_xmld = New XmlDocument()
                'Load the Xml file
                m_xmld.Load("D:\Users\Desktop\Xml to excel chahine\U881A1013_105_A_PREP_1.xml")
                m_nodelist = m_xmld.SelectNodes("/Root/ToolsList/PartNumber")
                'Loop through the nodes
                For Each m_node In m_nodelist
                    Dim partnumber = m_node.Attributes.GetNamedItem("PartNumber").Value
                    'Get the firstName Element Value
                    Dim text1 = m_node.ChildNodes.Item(0).InnerText
                    Dim text2 = m_node.ChildNodes.Item(1).InnerText
    Dim text3 = m_node.ChildNodes.Item(2).InnerText
                Dim text4 = m_node.ChildNodes.Item(3).InnerText
                    Console.Write("partnumber: " & partnumber _
                      & " text1: " & text1 & " text3: " _
                      & text3)
                    Console.Write(vbCrLf)
                Next
            Catch errorVariable As Exception
                'Error trapping
                Console.Write(errorVariable.ToString())
            End Try
        End Sub
    End Module

    si vous avez des idéés n'hésitez pas a m'aider , merci en avance :)

    après une question comment je peux implémenté ces informations sur un fichier Excel 


    mercredi 19 juin 2019 23:04

Toutes les réponses

  • Bonjour,

    J'ai lu très vite, je peux être passé à côté de quelque chose, mais je vois juste une boucle pour parcourir des nœuds, donc a priori ça va parcourir les nœuds du premier niveau.

    Il ne faut pas oublier, pour chaque nœud, d'écrire une boucle pour parcourir ses enfants, et ça de façon récursive. C'est-à-dire qu'il faut une fonction pour traiter un nœud, et cette fonction doit s'appeler elle-même pour chacun des enfants du nœud en cours de traitement.

    La fonction principale (appelante) va appeler cette fonction sur le nœud racine.

    Pour parcourir un fichier Excel on utilise trois objets, un pour l'application, un pour le classeur, un pour la feuille. C'est sujet vraiment très classique, je serais donc étonné que les moteurs de recherche restent secs sur la question.


    ***

    En lisant un petit peu moins vite : il n'y a pas tant que ça de niveaux d'arborescence, il est donc bien possible que j'aie répondu à côté. En revanche, en parcourant cette arborescence je vois que le XPath est Root/ToolsList/Tool.

    En effet, PartNumber est un attribut de Tool, et non le nom du nœud.

    • Modifié Gloops lundi 1 juillet 2019 21:54
    lundi 1 juillet 2019 21:44