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

Groovy Java Discussion :

Boucle sur un élément XML


Sujet :

Groovy Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Boucle sur un élément XML
    Bonjour,
    Je débute avec Groovy, j'aimerais créer un fichier XML à partir d'un existant, mais j'ai un problème dans ma boucle, je n'obtiens pas le résultat souhaité

    input xml:
    Code XML : 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
    <?xml version="1.0" encoding="UTF-8" ?>
    <root>
      <id>0035964572</id>
      <issue_date>20220214</issue_date>
      <request_quote_id>101974792</request_quote_id>
      <request_quote_line_item_id>000010</request_quote_line_item_id>
      <expiration_date>20220630</expiration_date>
      <sold_to_party_id>77288060</sold_to_party_id>
        <attachments>
        <file_name>file1</file_name>
        <title>title1</title>
        <type>type1</type>
        <mime_type>ùome1</mime_type>
        <location>location1</location>
      </attachments>
      <attachments>
       <file_name>file2</file_name>
        <title>title2</title>
        <type>type2</type>
        <mime_type>mime2</mime_type>
        <location>location2</location>
      </attachments>
     </root>

    Code groovy : 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
    def Message processData(Message message) {
     
      def writer = new StringWriter()
      def builder = new MarkupBuilder(writer)
     
      Reader reader = message.getBody(Reader);
      def fichierXML = new XmlSlurper().parse(reader);
      builder.Root {
        RequestQuoteHeader {
     
          'ListOfAttachment' {
            fichierXML.attachments.each {
              'Attachment' {
                'text_id'('FNAM')
                'file_name'(fichierXML.attachments.file_name)
                'title'(fichierXML.attachments.title)
                'mim_type'(fichierXML.attachments.mim_type)
                'location'(fichierXML.attachments.location)
              }
     
            }
     
          }
        }
      }
      message.setBody(writer.toString())
      return message;
    }

    Résultat : j'ai ces mauvaises concaténations :
    title1title2 location1location2
    Code XML : 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
    <Root>
      <RequestQuoteHeader>
        <ListOfAttachment>
          <Attachment>
            <text_id>FNAM</text_id>
            <file_name>file1file2</file_name>
            <title>title1title2</title>
            <mim_type></mim_type>
            <location>location1location2</location>
          </Attachment>
          <Attachment>
            <text_id>FNAM</text_id>
            <file_name>file1file2</file_name>
            <title>title1title2</title>
            <mim_type></mim_type>
            <location>location1location2</location>
          </Attachment>
        </ListOfAttachment>
      </RequestQuoteHeader>
    </Root>

    Auriez-vous des suggestions pour éviter ces concaténations ?
    Cordialement.

  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
    Vous pouvez utiliser une expression lambda avec, comme ça.
    Code groovy : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fichierXML.attachments.each { x ->
        'Attachment' {
            'text_id'('FNAM')
            'file_name'(x.file_name)
            'title'(x.title)
            'mime_type'(x.mime_type)
            'location'(x.location)
        }
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Excellent
    Bonjour
    Merci tsuji pour votre réponse
    j'ai testé votre code, il marche comme je veux
    Merci encore

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/11/2015, 10h57
  2. pb import xe xml elements
    Par mike5923 dans le forum Général Python
    Réponses: 0
    Dernier message: 01/10/2009, 15h34
  3. Réponses: 1
    Dernier message: 21/11/2006, 14h28
  4. [XML] Element '---' should be un-qualified
    Par billynirvana dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 10/04/2006, 17h35
  5. Réponses: 2
    Dernier message: 01/06/2005, 15h28

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