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

Go Discussion :

Go convertisseur xml


Sujet :

Go

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2016
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Go convertisseur xml
    Bonjour à tous,

    Je suis actuellement en train de reprendre la programmation et je me suis lancer dans le go. Je suis actuellement sur un projet d'un convertisseur txt to XML à réaliser. Et je suis bloqué ici : voir ligne 29
    Code : 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
    package main
     
     
    import (
    	"encoding/xml"
    	"fmt"
    	"os"
    )
     
    type PPSImport struct {
    	XMLName          xml.Name         `xml:"PPSImport"`
    	Version string `xml:",attr"`
    	ProductionOrders ProductionOrders `xml:"ProductionOrders"`
    }
    type ProductionOrders struct {
    	XMLName xml.Name `xml:"ProductionOrders"`
    	ProductionOrder ProductionOrder `xml:"ProductionOrder"`
    }
    type ProductionOrder struct {
    	XMLName xml.Name `xml:"ProductionOrder"`
    	OrderNo string `xml:",attr"`
     
    }
     
     
    func ExampleMarshalIndent() {
     
     
    	w := &PPSImport{Version : "1.1", ProductionOrders : ProductionOrder{OrderNo:string()var}}
     
    	output2, err := xml.MarshalIndent(w, "  ", "    ")
    	if err != nil {
    		fmt.Printf("error: %v\n", err)
    	}
     
     
    	fmt.Println("\n")
    	os.Stdout.Write(output2)
    Ce que je comprend pas c'est comment descendre dans mes nœuds pour modifier "OrderNo"
    Il faudrait implémenter mon interface 'w' avec les autre nœuds.
    Je ne trouve pas la solution que ce soit par mes recherches ou sur internet.

    Merci pour ceux qui prendront le temps de regarder de d'y répondre.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    mars 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2006
    Messages : 95
    Points : 139
    Points
    139
    Par défaut
    Désolé pour le temps de réponse, je ne traîne pas souvent par ici (peut-être que je devrais, pour aider un coup)

    Le problème vient dans ta manière d'encapsuler les struct/variables.
    Quel paramètre veux-tu mettre dans le OrderNo?

    Pour t'aider, tu peux déplier tes structs si tu n'arrives pas à voir le problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	w := &PPSImport{
    		Version: "1.1",
    		ProductionOrders: ProductionOrder{
    			OrderNo: string()var,
    		},
    	}
    On peut voir que tu essayes de mettre un "string()var" dans OrderNo, ce qui ne veut rien dire en Go.
    "string()" permet de caster un type en string (souvent utilisé pour transformer un slice de byte ([]byte) en string (exemple : string(monSliceDeByte))
    var permet de déclarer une variable, mais tout seul, ça ne fait rien

    Si tu veux mettre une variable directement, genre une chaîne, passe lui juste le nom de ta variable, exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	maString := "ma string"
    	w := &PPSImport{
    		Version: "1.1",
    		ProductionOrders: ProductionOrder{
    			OrderNo: maString,
    		},
    	}
    Ou si c'est un slice de byte (un slice c'est un tableau dynamique)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	monSlice := []byte{64, 65, 66}
    	w := &PPSImport{
    		Version: "1.1",
    		ProductionOrders: ProductionOrder{
    			OrderNo: string(monSlice),
    		},
    	}

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    mars 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2006
    Messages : 95
    Points : 139
    Points
    139
    Par défaut
    Autres commentaires :

    Ça va imprimer 2 sauts de lignes, 1 pour le fmt.Println() lui-même, et 1 pour le "\n".

    Peut être remplacé par un fmt.Print(w). fmt.PrintXXX écrit dans os.Stdout par défaut.
    Si tu veux écrire dans os.Stderr, tu peux faire un fmt.Fprint(os.Stderr, w) par exemple.

    La correction complète : https://play.golang.org/p/SM_cYzvVCcN

Discussions similaires

  1. Cherche convertisseur gratuit de XML en XSD
    Par rouletabille63 dans le forum Logiciels Libres & Open Source
    Réponses: 1
    Dernier message: 03/08/2014, 17h41
  2. Convertisseur de fichier XML en .doc
    Par Pierre_35 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 28/10/2011, 17h12
  3. Convertisseur VB --> Delphi : VB2D
    Par gbuxo dans le forum Outils
    Réponses: 11
    Dernier message: 25/05/2005, 11h47
  4. Débutant XML
    Par viny dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 25/07/2002, 13h07
  5. Pas de casse dans les XML
    Par :GREG: dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 14h51

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