Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
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 :
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
/////////////////////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
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
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 :
<?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 :
<?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
Tes données proviennent d'où ?
Hors ligne
Hors ligne
je pense que tu peux faire avec des datawindow et définir ton template directement dans la DW
Hors ligne
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
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
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
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
effectivement, je utiliserai XMLParseFile pour la partie de vérification de XML.
Hors ligne
On peut fermer le sujet?
Hors ligne
Ok comme vous voulez je vais le marquer comme résolu.
Hors ligne
mattdamon a écrit:
Ok comme vous voulez je vais le marquer comme résolu.
Merci
Hors ligne
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):
<?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
pourquoi tu veux les enlever? tels qu'ils sont on interprète très bien qu'ils sont vides..
Hors ligne
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 :
<?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
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 :
///////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
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 :
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
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
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
ll_ret = XMLParseFile("c:\temp\mydoc.xml", ValAlways!, ls_err, TRUE, TRUE)
@+
Hors ligne
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 XMLParseStringCode: 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
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
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.
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