Powerbuilder pour les completement Geeks !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 15-05-2008 09:47:38

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Write de fichier XML

Bonjour à tous,

J'ai un problème au niveau d'écriture de fichier XML.
J'ai utiliser le PBDOM de PowerBuilder pour faire l'écriture de XML puis il y a eu une phase de vérification de syntaxe.

D'abord, pour l'écriture de l'entête  de XML, j'ai écrit le code suivant :

Code: pb

PBDOM_BUILDER pbdom_buildr
PBDOM_DOCUMENT pbdom_doc

string strXML = "<Document xmlns = ~"urn:iso:std:iso:20022:xsd:setr.006.001.02 ~" xmlns:xsi = ~"http://www.w3.org/2001/XMLSchema-instance~">"

try
/////////////////////Entete de document XML/////////////////////////////
pbdom_buildr = Create PBDOM_BUILDER

pbdom_doc = pbdom_buildr.BuildFromString (strXML)

pbdom_doc.SaveDocument ("D:\SaveDocument\File.xml")


catch (PBDOM_EXCEPTION except)
  MessageBox ("PBDOM_EXCEPTION", except.GetMessage())
end try


Voici que ce qu'il donne comme résultat :

<?xml version="1.0" encoding="UTF-16LE" standalone="no" ?>
  <Document xmlns="urn:iso:std:iso:20022:xsd:setr.006.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

Maintenant le problème c'est que lorsque je voulais ajouter des données dans le fichier alors ça marche pas.
par exemple j'ajoute une racine (root) pour le fichier

Code: pb

/////////////////////Creation de root pour XML////////////////////////////
pbdom_doc = create PBDOM_DOCUMENT
pbdom_doc.newdocument( "Root")


Voici que ce qu'il donne comme résultat :

<Root />

Donc il a effacé l'entête que j'ai crée.

Je besoins de vos aides pour pouvoir avancer.

Merci

Dernière modification par mattdamon (28-05-2008 13:00:56)

Hors ligne

 

#2 15-05-2008 10:50:15

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

je ne sais pas concrètement ce que tu veux faire mais tu sais que tu peux utiliser une DW pour générer du XML ?

Hors ligne

 

#3 15-05-2008 11:17:17

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Merci thezerg pour ta réponse, mais voila je vais t'expliquer mes besoins :

Je doit générer selon une template un fichier XML bien structuré et selon bien sûr la structure du template.

Voici un extrait de ma templete :

Code:

<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by SWIFTStandards Workstation (build:R5.0.1.3) on 2005 Mar 15 19:41:02-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:iso:std:iso:20022:xsd:setr.006.001.02" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:xsd:setr.006.001.02">
<xs:element name="Document" type="Document"/>
<xs:complexType name="Account2">
<xs:sequence>
<xs:element name="Id" type="AccountIdentification1" minOccurs="0" maxOccurs="1"/>
<xs:element name="AcctSvcr" type="PartyIdentification2Choice"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AccountIdentification1">
<xs:sequence>
<xs:element name="Prtry" type="SimpleIdentificationInformation"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AccountIdentificationAndName3">
<xs:sequence>
<xs:element name="Id" type="CashAccountIdentification1Choice"/>
<xs:element name="Nm" type="Max35Text" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="ActiveCurrencyAnd13DecimalAmount_SimpleType">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0"/>
<xs:fractionDigits value="13"/>
<xs:totalDigits value="18"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ActiveCurrencyAnd13DecimalAmount">
<xs:simpleContent>
<xs:extension base="ActiveCurrencyAnd13DecimalAmount_SimpleType">
<xs:attribute name="Ccy" type="ActiveCurrencyCode" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="ActiveCurrencyAndAmount_SimpleType">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0"/>
<xs:fractionDigits value="5"/>
<xs:totalDigits value="18"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ActiveCurrencyAndAmount">
<xs:simpleContent>
<xs:extension base="ActiveCurrencyAndAmount_SimpleType">
<xs:attribute name="Ccy" type="ActiveCurrencyCode" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="ActiveCurrencyCode">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3,3}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="AdditionalReference3">
<xs:sequence>
<xs:element name="Ref" type="Max35Text"/>
<xs:element name="RefIssr" type="PartyIdentification2Choice" minOccurs="0" maxOccurs="1"/>
<xs:element name="MsgNm" type="Max35Text" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="AddressType2Code">
<xs:restriction base="xs:string">
<xs:enumeration value="ADDR"/>
<xs:enumeration value="PBOX"/>
<xs:enumeration value="HOME"/>
<xs:enumeration value="BIZZ"/>
<xs:enumeration value="MLTO"/>
<xs:enumeration value="DLVY"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="AlternateSecurityIdentification1">
<xs:sequence>
<xs:element name="Id" type="Max35Text"/>
<xs:choice>
<xs:element name="DmstIdSrc" type="CountryCode"/>
<xs:element name="PrtryIdSrc" type="Max35Text"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AmountPrice1Choice">
<xs:sequence>
<xs:choice>
<xs:element name="Amt" type="CurrencyAndAmount"/>
<xs:element name="UnitPric" type="UnitPrice4"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="AnyBICIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AustrianBankleitzahlIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="AT[0-9]{5,5}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BBANIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9]{1,30}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="BICIdentification1">
<xs:sequence>
<xs:element name="BIC" type="BICIdentifier"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="BICIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BaseOneRate">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="10"/>
<xs:totalDigits value="11"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BloombergIdentifier">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="35"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CHIPSParticipantIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="CP[0-9]{4,4}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CHIPSUniversalIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="CH[0-9]{6,6}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CanadianPaymentsARNIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="CA[0-9]{9,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CancellationRight1">
<xs:sequence>
<xs:element name="Strd" type="CancellationRight2Code"/>
<xs:element name="AddtlInf" type="Max350Text" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="CancellationRight2Code">
<xs:restriction base="xs:string">
<xs:enumeration value="VALI"/>
<xs:enumeration value="NOXO"/>
<xs:enumeration value="NOWA"/>
<xs:enumeration value="NOIN"/>
<xs:enumeration value="OTHR"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CashAccountIdentification1Choice">
<xs:sequence>
<xs:choice>
<xs:element name="IBAN" type="IBANIdentifier"/>
<xs:element name="BBAN" type="BBANIdentifier"/>
<xs:element name="UPIC" type="UPICIdentifier"/>
<xs:element name="DmstAcct" type="SimpleIdentificationInformation"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CashAccountType1">
<xs:sequence>
<xs:element name="Strd" type="FundCashAccount1Code"/>
<xs:element name="AddtlInf" type="Max350Text" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Charge10">
<xs:sequence>
<xs:element name="Tp" type="ChargeType1"/>
<xs:element name="ChrgBsis" type="TaxationBasis1" minOccurs="0" maxOccurs="1"/>
<xs:element name="Amt" type="ActiveCurrencyAnd13DecimalAmount"/>
<xs:element name="Rate" type="PercentageRate" minOccurs="0" maxOccurs="1"/>
<xs:element name="RcptId" type="PartyIdentification2Choice" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ChargeType1">
<xs:sequence>
<xs:element name="Strd" type="ChargeType6Code"/>
<xs:element name="AddtlInf" type="Max350Text" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="ChargeType6Code">
<xs:restriction base="xs:string">
<xs:enumeration value="BEND"/>
<xs:enumeration value="FEND"/>
<xs:enumeration value="SWIT"/>
<xs:enumeration value="DLEV"/>
<xs:enumeration value="DISC"/>
<xs:enumeration value="PENA"/>
<xs:enumeration value="MANF"/>
<xs:enumeration value="POST"/>
<xs:enumeration value="REGF"/>
<xs:enumeration value="SHIP"/>
<xs:enumeration value="CHAR"/>
<xs:enumeration value="OTHR"/>
<xs:enumeration value="CDSC"/>
<xs:enumeration value="EQUL"/>
<xs:enumeration value="CBCH"/>
<xs:enumeration value="PREM"/>
<xs:enumeration value="INIT"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Cheque3">
<xs:sequence>
<xs:element name="Nb" type="Max35Text" minOccurs="0" maxOccurs="1"/>
<xs:element name="PyeeId" type="PartyIdentification2Choice"/>
<xs:element name="DrweeId" type="FinancialInstitutionIdentification3Choice" minOccurs="0" maxOccurs="1"/>
<xs:element name="DrwrId" type="PartyIdentification2Choice" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClearingSystemMemberIdentificationChoice">
<xs:sequence>
<xs:choice>
<xs:element name="USCHU" type="CHIPSUniversalIdentifier"/>
<xs:element name="NZNCC" type="NewZealandNCCIdentifier"/>
<xs:element name="IENSC" type="IrishNSCIdentifier"/>
<xs:element name="GBSC" type="UKDomesticSortCodeIdentifier"/>
<xs:element name="USCH" type="CHIPSParticipantIdentifier"/>
<xs:element name="CHBC" type="SwissBCIdentifier"/>
<xs:element name="USFW" type="FedwireRoutingNumberIdentifier"/>
<xs:element name="PTNCC" type="PortugueseNCCIdentifier"/>
<xs:element name="RUCB" type="RussianCentralBankIdentificationCodeIdentifier"/>
<xs:element name="ITNCC" type="ItalianDomesticIdentifier"/>
<xs:element name="ATBLZ" type="AustrianBankleitzahlIdentifier"/>
<xs:element name="CACPA" type="CanadianPaymentsARNIdentifier"/>
<xs:element name="CHSIC" type="SwissSICIdentifier"/>
<xs:element name="DEBLZ" type="GermanBankleitzahlIdentifier"/>
<xs:element name="ESNCC" type="SpanishDomesticInterbankingIdentifier"/>
<xs:element name="ZANCC" type="SouthAfricanNCCIdentifier"/>
<xs:element name="HKNCC" type="HongKongBankIdentifier"/>
<xs:element name="AUBSBx" type="ExtensiveBranchNetworkIdentifier"/>
<xs:element name="AUBSBs" type="SmallNetworkIdentifier"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Commission6">
<xs:sequence>
<xs:element name="Tp" type="CommissionType1" minOccurs="0" maxOccurs="1"/>
<xs:element name="Bsis" type="TaxationBasis1" minOccurs="0" maxOccurs="1"/>
<xs:element name="Amt" type="ActiveCurrencyAnd13DecimalAmount" minOccurs="0" maxOccurs="1"/>
<xs:element name="Rate" type="PercentageRate" minOccurs="0" maxOccurs="1"/>
<xs:element name="RcptId" type="PartyIdentification2Choice" minOccurs="0" maxOccurs="1"/>
<xs:element name="ComrclAgrmtRef" type="Max35Text" minOccurs="0" maxOccurs="1"/>
<xs:element name="WvgDtls" type="CommissionWaiver2" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CommissionType1">
<xs:sequence>
<xs:element name="Strd" type="CommissionType5Code"/>
<xs:element name="AddtlInf" type="Max350Text" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="CommissionType5Code">
<xs:restriction base="xs:string">
<xs:enumeration value="FEND"/>
<xs:enumeration value="BEND"/>
<xs:enumeration value="OTHR"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CommissionWaiver2">
<xs:sequence>
<xs:element name="InstrBsis" type="WaivingType1"/>
<xs:element name="WvdRate" type="PercentageRate"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="ConsolidatedTapeAssociationIdentifier">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="35"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CopyInformation1">
<xs:sequence>
<xs:element name="CpyInd" type="YesNoIndicator"/>
<xs:element name="OrgnlRcvr" type="BICIdentification1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CountryAndResidentialStatusType1">
<xs:sequence>
<xs:element name="Ctry" type="CountryCode"/>
<xs:element name="ResdtlSts" type="ResidentialStatus1Code"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="CountryCode">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{2,2}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CreditTransfer3">
<xs:sequence>
<xs:element name="Ref" type="Max35Text" minOccurs="0" maxOccurs="1"/>
<xs:element name="CdtrDtls" type="Creditor2"/>
<xs:element name="DbtrDtls" type="Debtor2" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Creditor2">
<xs:sequence>
<xs:element name="Cdtr" type="PartyIdentification2Choice" minOccurs="0" maxOccurs="1"/>
<xs:element name="AcctId" type="AccountIdentificationAndName3"/>
<xs:element name="FnlAgt" type="FinancialInstitutionIdentification3Choice"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="CurrencyAndAmount_SimpleType">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0"/>
<xs:fractionDigits value="5"/>
<xs:totalDigits value="18"/>
</xs:restriction>
</xs:simpleType>

Selon cette template je doit générer le fichier XML  suivant :

Code:

<?xml version = "1.0" encoding = "UTF-8"?>
<Document xmlns = "urn:iso:std:iso:20022:xsd:setr.006.001.02" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
  <setr.006.001.02>
    <RltdRef>
      <Ref>OR89289TJ67</Ref>
      <MsgNm>setr.004.001.02</MsgNm>
    </RltdRef>
    <MltplExctnDtls>
      <InvstmtAcctDtls>
        <AcctId>
          <Prtry>
            <Id>78-89ABCD</Id>
          </Prtry>
        </AcctId>
      </InvstmtAcctDtls>
      <IndvExctnDtls>
        <OrdrRef>KL67TRE54</OrdrRef>
        <DealRef>ZERER6</DealRef>
        <FinInstrmDtls>
          <Id>
            <ISIN>IE9876543210</ISIN>
          </Id>
        </FinInstrmDtls>
        <UnitsNb>
          <Unit>30.89</Unit>
        </UnitsNb>
        <NetAmt Ccy = "GBP">728</NetAmt>
        <HldgsRedRate>10</HldgsRedRate>
        <TradDtTm>
          <Dt>2005-06-06</Dt>
        </TradDtTm>
        <PricDtls>
          <Tp>
            <Strd>OFFR</Strd>
          </Tp>
          <Val>
            <Amt Ccy = "GBP">23.5678</Amt>
          </Val>
        </PricDtls>
        <PrtlyExctdInd>false</PrtlyExctdInd>
        <CumDvddInd>false</CumDvddInd>
        <PhysDlvryInd>false</PhysDlvryInd>
      </IndvExctnDtls>
    </MltplExctnDtls>
  </setr.006.001.02>
</Document>

Donc d'après vous est ce que je doit utiliser le PBDOM pour écrire le fichier XML ou bien j'utilise DW.

Si je peut utiliser la DW, est ce que cette dernière me permet de suivre ma template ou non ?

Merci   

Dernière modification par mattdamon (15-05-2008 11:18:16)

Hors ligne

 

#4 15-05-2008 11:21:06

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

Tes données proviennent d'où ?

Hors ligne

 

#5 15-05-2008 11:24:35

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Mes tables oracle

Hors ligne

 

#6 15-05-2008 11:35:50

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

je pense que tu peux faire avec des datawindow et définir ton template directement dans la DW

Hors ligne

 

#7 15-05-2008 11:37:49

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

J'ai trouvé ca dans le forum, je crois que c'est utile non ?

http://pbadonf.fr/forum/viewtopic.php?pid=16095#p16095

Hors ligne

 

#8 15-05-2008 11:41:22

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

mattdamon a écrit:

J'ai trouvé ca dans le forum, je crois que c'est utile non ?

http://pbadonf.fr/forum/viewtopic.php?pid=16095#p16095

je dirais même que c'est plutôt approprié à la situation ;)

Hors ligne

 

#9 15-05-2008 11:44:53

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Donc merci bien à toi thezerg.
c'est mieux que PBDOM
c'est vraiment de cette manière je gagne l'effort de 2 semaines.

mais je doit comme même utiliser PBDOM dans la partie vérification de syntaxe de XML

Hors ligne

 

#10 15-05-2008 11:47:40

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

Déjà avec PB tu as des fonctions comme XMLParseFile auquelles tu peux ajouter un schéma pour vérifier ton fichier XML. Peut-être que tu devrais jeter un oeil avant de te lancer dans le PBDOM non ?

Hors ligne

 

#11 15-05-2008 11:58:07

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

effectivement, je utiliserai  XMLParseFile pour la partie de vérification de XML.

Hors ligne

 

#12 15-05-2008 12:34:30

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

On peut fermer le sujet?

Hors ligne

 

#13 15-05-2008 12:46:05

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Ok comme vous voulez je vais le marquer comme résolu.

Hors ligne

 

#14 15-05-2008 13:00:08

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

mattdamon a écrit:

Ok comme vous voulez je vais le marquer comme résolu.

Merci

Hors ligne

 

#15 19-05-2008 07:39:41

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Bonjour à tous,

Je revient  autrefois à la même discussion, parce que j'ai un petit problème au niveau de génération de fichier XML.

Quand je fais retrieve de deux lignes de ma table, il m'affiche selon ma structure de XML, ces deux lignes mais il affiche aussi les champs qui sont vides (champs7, 8 et 9):

Code: xml

   <?xml version="1.0" encoding="UTF-16LE" standalone="no" ?> 
- <untitled>
- <untitled_row>
  <champs1>22222223</champs1> 
  <champs2>Compte  int</champs2> 
  <champs3>2008-01-31</champs3> 
  <champs4>ATIT</champs4> 
  <champs5>Entite</champs5> 
  <champs6>2190286</champs6> 
  <champs7 /> 
  <champs8 /> 
  <champs9 /> 
  </untitled_row>
- <untitled_row>
  <champs1>CNOR2</champs1> 
  <champs2>TITRE</champs2> 
  <champs3>2007-12-31</champs3> 
  <champs4>ATIT</champs4> 
  <champs5>M0</champs5> 
  <champs6>619148</champs6> 
  <champs7>2190286</champs7>
  <champs8>219870286</champs8>
  <champs9 /> 
  </untitled_row>



Donc ce que je voulais savoir comment éléminer les tags de XML qui n'ont pas de valeur, et d'afficher les restes.

Merci

Dernière modification par mattdamon (19-05-2008 07:45:49)

Hors ligne

 

#16 19-05-2008 08:58:15

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

pourquoi tu veux les enlever? tels qu'ils sont on interprète très bien qu'ils sont vides..

Hors ligne

 

#17 19-05-2008 09:12:15

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

En fait, le client qui décide le format de fichier XML reçu à sa machine pour qu'il puisse l'interpréter.

Voici ce qu'il voulait :

Code: xml

<?xml version="1.0" encoding="UTF-16LE" standalone="no" ?> 
- <untitled>
- <untitled_row>
  <champs1>22222223</champs1> 
  <champs2>Compte  int</champs2> 
  <champs3>2008-01-31</champs3> 
  <champs4>ATIT</champs4> 
  <champs5>Entite</champs5> 
  <champs6>2190286</champs6> 
  </untitled_row>
- <untitled_row>
  <champs1>CNOR2</champs1> 
  <champs2>TITRE</champs2> 
  <champs3>2007-12-31</champs3> 
  <champs4>ATIT</champs4> 
  <champs5>M0</champs5> 
  <champs6>619148</champs6> 
  <champs7>2190286</champs7>
  <champs8>219870286</champs8>
   </untitled_row>

Hors ligne

 

#18 27-05-2008 08:26:52

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Bonjour à tous,

J’ai décidé enfin à travailler avec PBDOM pour écrire mon XML, mais en fait, j’ai un grand problème dans mon code PB, je vous explique :
Au niveau d’écriture de mon XML et chaque fois je veux ajouter un élément à XML je fais comme suit :

Code: pb

///////ajout de premier tag à XML/////////////
PBDOM_ELEMENT pbdom_elem1
PBDOM_TEXT pbdom_txt1

pbdom_elem1 = Create PBDOM_ELEMENT
pbdom_txt1 = Create PBDOM_TEXT

pbdom_elem1.SetName("tag")
pbdom_txt1.SetName("value")
pbdom_elem1.AddContent(pbdom_txt1)

///////ajout de deuxième tag à XML/////////////
PBDOM_ELEMENT pbdom_elem2
PBDOM_TEXT pbdom_txt2

pbdom_elem2 = Create PBDOM_ELEMENT
pbdom_txt2 = Create PBDOM_TEXT

pbdom_elem2.SetName("tag")
pbdom_txt2.SetName("value")
pbdom_elem2.AddContent(pbdom_txt2)


Maintenant imaginer que je vais ajouter 1000 tags à mon XML !!!!

Je vois que cette méthode n’est pas efficace surtout mon PowerBuilder n’accepte pas un code volumineux plus de 800 lignes de code.

Que ce que dois-je faire ?

Merci   

Dernière modification par mattdamon (27-05-2008 09:43:21)

Hors ligne

 

#19 04-07-2008 09:54:20

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Bonjour à tous,

Je me suis arrivé enfin à écrire mon XML file avec le PBDOM de powerbuilder, mais maintenant je voulais vérifier syntaxiquement ce fichier par rapport à XSD.

Je connais qu'il existe une fonction en powerbuilder qui permet de vérifier la validité de XML mais pas sa syntaxe par rapport à un XSD    :

Code: pb

ll_ret = XMLParseFile("c:\temp\mydoc.xml", ls_err)


En java, il y a eu une fonction que je la donne comme paramètre le fichier XML  et le fichier XSD puis elle vérifie la syntaxe et elle retourne le résultat.

Donc est-ce que quelqu'un connais comment je peut faire ca ? 

Merci,

Dernière modification par mattdamon (04-07-2008 09:55:31)

Hors ligne

 

#20 04-07-2008 10:28:18

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

mattdamon a écrit:

Bonjour à tous,

Je me suis arrivé enfin à écrire mon XML file avec le PBDOM de powerbuilder, mais maintenant je voulais vérifier syntaxiquement ce fichier par rapport à XSD.

Je connais qu'il existe une fonction en powerbuilder qui permet de vérifier la validité de XML mais pas sa syntaxe par rapport à un XSD    :

Code: pb

ll_ret = XMLParseFile("c:\temp\mydoc.xml", ls_err)


En java, il y a eu une fonction que je la donne comme paramètre le fichier XML  et le fichier XSD puis elle vérifie la syntaxe et elle retourne le résultat.

Donc est-ce que quelqu'un connais comment je peut faire ca ? 

Merci,

Et XMLParseString ?

Hors ligne

 

#21 04-07-2008 10:41:23

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Les deux fonctions : XMLParseFile, XMLParseString ne vérifie que la grammaire de fichier XML et pas la syntaxe par rapport à XSD.

Mais est-ce peut-tu me dire c'est quoi la signification de ValAlways! de la fonction XMLParseString

Code: pb

ll_ret = XMLParseFile("c:\temp\mydoc.xml", ValAlways!, ls_err, TRUE, TRUE)


@+

Hors ligne

 

#22 04-07-2008 10:45:59

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Write de fichier XML

mattdamon a écrit:

Les deux fonctions : XMLParseFile, XMLParseString ne vérifie que la grammaire de fichier XML et pas la syntaxe par rapport à XSD.

Mais est-ce peut-tu me dire c'est quoi la signification de ValAlways! de la fonction XMLParseString

Code: pb

ll_ret = XMLParseFile("c:\temp\mydoc.xml", ValAlways!, ls_err, TRUE, TRUE)


@+

·    ValNever! - Do not report validation errors.·    ValAlways! - Always report validation errors.·    ValAuto! - (default) Report validation errors only if a grammar is specified.

Hors ligne

 

#23 04-07-2008 12:58:10

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Je crois pas que XMLParseFile ou XMLParseString nous permettent de résoudre notre problème...
Comme même je vais essayer de chercher ..

Dernière modification par mattdamon (04-07-2008 12:58:46)

Hors ligne

 

#24 07-07-2008 12:14:30

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,940

Re: Write de fichier XML

Salut à tous,

Sur le Net et en Java j'ai trouvé quelque chose qui peut résoudre mon problème :
le code ci-dessous, en lui donnant comme paramètre le fichier XML et son schéma XSD afin de vérifier sa syntaxe.

Code: java

public static Object validXMLWithDOM(File xmlFile,
File xsdFile){
                Object returnedObject = null;

                DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
                dbf.setIgnoringComments(true);
                dbf.setNamespaceAware(true);
                dbf.setValidating(true);
                
                if(xsdFile!=null){
                        dbf.setAttribute(JAXP_SCHEMA_LANGUAGE,
W3C_XML_SCHEMA);
                        dbf.setAttribute(JAXP_SCHEMA_SOURCE, xsdFile);
                }
                try {
                        // Parsage du fichier XML avec DOM
                        DocumentBuilder db = dbf.newDocumentBuilder();
                        EFactureHandler errorHandler = new
EFactureHandler();
                        db.setErrorHandler(errorHandler);
                        // Parsing
                        Document doc = db.parse(xmlFile);
                        //PAS D'ERREUR (on renvoi le document parsé)
                        Object errors = errorHandler.getErrors();
                        if(errors==null){       
                                returnedObject = doc;
                        }
                        //ERREUR(S) (on renvoi le(s) erreurs)
                        //SAXParseException de type : 
                        // - Erreur fatal
                        // - Erreur
                        // - Warning
                        else{
                                returnedObject = errors;
                        }
                } catch (ParserConfigurationException pcee) {
                        returnedObject = pcee;
                } catch (IOException ioe) {
                        returnedObject = ioe;
                } catch (SAXException saxe) {
                        returnedObject = saxe;
                }
                
                return returnedObject;
        }


Ma question est-ce que c'est faisable de faire ça  en PB afin de vérifier mon XML par rapport à son XSD.

Dernière modification par mattdamon (07-07-2008 12:50:02)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22