Volubis, le forum IBM i Index du Forum Volubis, le forum IBM i
avec les clubs Informatiques IPL et Bretagne.
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

XML-INTO avec %handler

 
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
little_noland



Inscrit le: 10 Déc 2012
Messages: 7

MessagePosté le: Mer 21 Aoû 2019, 15:12:39    Sujet du message: XML-INTO avec %handler Répondre en citant

Bonjour à toutes et tous,

Je rencontre un petit problème avec le %handler et le XML-into pour un fichier XML qui a des sous-imbrications. Voici un exemple du fichier que je veux importer :


Code:


<CPPStructurePartenaireUnitaire>
      <TypeIdentifiant>1</TypeIdentifiant>
      <Identifiant>25200113600016</Identifiant>
      <RaisonSociale>SIVOS ECOLES CARBUCCIA UCCIANI</RaisonSociale>
      <AdressePostale>
         <Adresse>MAIRIE DE CARBUCCIA</Adresse>
         <CodePostal>20133</CodePostal>
         <Ville>CARBUCCIA</Ville>
         <Pays>
            <Code>FR</Code>
            <Libelle>France</Libelle>
         </Pays>
         <NumTelephone>495528125</NumTelephone>
         <Courriel>mairiedecarbuccia@orange.fr</Courriel>
      </AdressePostale>
      <Services>
         <Service>
            <Code>FACTURES_PUBLIQUES</Code>
            <Nom>Service des factures publiques</Nom>
            <GestionEGMT>false</GestionEGMT>
            <ServiceActif>true</ServiceActif>
         </Service>
         <Service>
            .....
         </Service>
         <Service>
            .....
         </Service>
         <Service>
            .....
         </Service>
      </Services>
      <EmetteurEdi>false</EmetteurEdi>
      <RecepteurEdi>false</RecepteurEdi>
      <GestionStatutMiseEnPaiement>false</GestionStatutMiseEnPaiement>
      <GestionEngagement>false</GestionEngagement>
      <GestionService>false</GestionService>
      <GestionServiceEngagement>false</GestionServiceEngagement>
      <EstMOA>false</EstMOA>
      <EstMOAUniquement>false</EstMOAUniquement>
      <StructureActive>true</StructureActive>
   </CPPStructurePartenaireUnitaire>




Voici la déclaration de mes data-structures :


Code:



     //bloc CPPStructurePartenaireUnitaire
      dcl-ds annuaire QUALIFIED DIM(100);
         TypeIdentifiant CHAR(1);
         Identifiant CHAR(14);
         RaisonSociale CHAR(80);
         AdressePostale LIKEDS(adresseT);
         Services LIKEDS(servicesT);
         EmetteurEdi CHAR(5); //Boolean  true / false
         RecepteurEdi CHAR(5); //Boolean  true / false
         GestionStatutMiseEnPaiement CHAR(5); //Boolean  true / false
         GestionEngagement CHAR(5); //Boolean  true / false
         GestionService CHAR(5); //Boolean  true / false
         GestionServiceEngagement CHAR(5); //Boolean  true / false
         EstMOA CHAR(5); //Boolean  true / false
         EstMOAUniquement CHAR(5); //Boolean  true / false
         StructureActive CHAR(5); //Boolean  true / false
         nbrstruct int(10);
      end-ds;


      dcl-ds servicesT qualified;
         Service LIKEDS(serviceT) DIM(100);
         nbrservices int(10);
      end-ds;

      //Sous-tableau service
     dcl-ds serviceT qualified template;
         Code CHAR(100);
         Nom CHAR(100);
         AdressePostale LIKEDS(adresseT);
         GestionEGMT CHAR(5); //Boolean  true / false
         ServiceActif CHAR(5); //Boolean  true / false
         nbrservice int(10);
      end-ds;

      //Sous-tableau Adresse
      dcl-ds adresseT qualified template;
         Adresse CHAR(100);
         ComplementAdresse1 CHAR(100);
         ComplementAdresse2 CHAR(100);
         CodePostal CHAR(5);
         Ville CHAR(100);
         Pays likeds(paysT);
         NumTelephone CHAR(10);
         Courriel CHAR(100);
      end-ds;

      //Sous-tableau paysT
      dcl-ds paysT template;
         Code CHAR(2);
         Libelle CHAR(100);
      end-ds;



Le handler lit bien tous les enregistrements mais le soucis est au niveau de la data structure services que je déclare en DIM(100). il ne va me prendre que jusqu'à 100 service maximum.

Le problème étant que certains enregistrements ont plus de 100 services.

J'ai essayé de déclarer un dim(999) mais j'ai une erreur à la compilation que l'élément de donnée dépasse 16mo. J'ai essayé d'ajouter également l'option countprefix afin de savoir le nombre d'enregistrement dans la ds mais la valeur est toujours 0.

Comment je peux arriver a parser tous les services sans limite ?



Merci
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 699
Localisation: Nantes

MessagePosté le: Mer 21 Aoû 2019, 16:57:07    Sujet du message: 16 Mo Répondre en citant

la limite de 16 Mo est un incontournable en RPG.

je dirais que le seule solution c'est XMLTABLE dans un Select SQL produisant un curseur ...
_________________
Christian Massé (Volubis.fr)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
little_noland



Inscrit le: 10 Déc 2012
Messages: 7

MessagePosté le: Jeu 22 Aoû 2019, 07:01:28    Sujet du message: (sans sujet) Répondre en citant

Bonjour,

Merci pour votre réponse rapide.


Je pensais qu'il existerait peut-être une solution à mon problème en déclarant un array dynamique ou autre chose, Je vais voir avec XMLTABLE.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Anti Bot Question MOD - phpBB MOD against Spam Bots