Maison  >  Article  >  développement back-end  >  Exemple de code d'application XML dans Powerbuilder

Exemple de code d'application XML dans Powerbuilder

Y2J
Y2Joriginal
2017-04-25 14:59:272262parcourir

La fenêtre de données dans Powerbuilder est vraiment bonne. Le travail se fait essentiellement autour d'elle et elle est très efficace Ces derniers jours, lorsque j'ai besoin d'exporter des fichiers XML sur des projets, j'utilise pb9 (la fonction d'exportation et d'importation XML. vient de powerbuilder9.0 Fonctions ajoutées) a fait une démo pour vérifier la faisabilité

L'exemple de fichier est le suivant (la DTD ne sera pas publiée, mais un exemple simple sera donné)

Le code est le suivant :

<trans> 
<transdetail> 
<order><date/></order> 
<orderdetail><product/></orderdetail> 
<orderdetail><product/></orderdetail> 
</transdetail> 
<transdetail> 
<order><date/></order> 
<orderdetail><product/></orderdetail> 
<orderdetail><product/></orderdetail> 
</transdetail> 
</trans>

Ma structure de table, je pense que les tables de chacun devraient être conçues comme ça aussi
commande (commande client, incluant le client, la date et autres informations)
orderdetail (détails de la commande client, y compris les informations sur le produit, la quantité et le prix)
À ce stade, une personne avisée pourra peut-être voir d'un coup d'œil qu'il y a des problèmes avec le formatage de ce XML. Par exemple, cela peut être plus raisonnable

Le code est le suivant :

<trans> <!--transdetail 这个节或许是多余的--> <order> <date/> <detail><!-- 明细是一个订单的一部分,不应该脱离订单头--> <orderdetail><product/></orderdetail> <orderdetail><product/></orderdetail> </detail> </order> <order> <date/> <detail> <orderdetail><product/></orderdetail> <orderdetail><product/></orderdetail> </detail> </order> </trans>

Mais je suis un département ZF et je ne peux pas le changer, donc je dois le faire même si c'est merdique
Le code de traitement dans pb9 : En fait, il n'y a que trois lignes de code écrites dans pb9, et le vrai code n'est en fait qu'une seule ligne, qui consiste à ajouter Il y a une fenêtre avec une fenêtre de données et un bouton dessus, et cette ligne de code est écrite dans le bouton, haha
dw_export.save("c:test.xml",xml!,false)
En fait, il faut vraiment le traiter Quoi Il est nécessaire de définir deux fenêtres de données, en définissant principalement leurs modèles XML :
d_order (exportation des données d'en-tête de commande, deuxième ligne de code, peut être définie dans EITX)
Créez une nouvelle fenêtre de données (notez ici, Si les données conditionnelles comportent plusieurs lignes, il est préférable de les regrouper en SQL, sinon les données générées seront répétées)
3. Faites un clic droit dans la zone d'édition du modèle d'export/import XML (ci-après dénommé EITX), enregistrer sous un autre nom A
4. Définissez le modèle d'utilisation sous exportation de données sur le nom du modèle que vous venez d'enregistrer
Le modèle défini est le suivant :

Le code est le suivant :

<?xml version=~"1.0~" encoding=~"gb2312~" standalone=~"no~"?> <trans> <transdetail __pbband=~"detail~"><!-- 在EITX中的transdetail节上点右键选中"starts detail" [注1] --> <order> <date>order_date</date> </order> dw_detail <!-- 在EITX中的transdetail节上点右键选"add child"下的"datawindow control refrence" [注2] --> </transdetail> </trans>

Il y a deux points à noter
[Note 1] Ce détail de départ contrôlera la circulation des données, il faut donc le sélectionner, mais chaque xml ne peut en définir qu'un, et un problème sera se pose ici. Si je commande l'en-tête Après avoir bouclé, comment boucler à nouveau les détails de la commande ? La conclusion est qu'elle ne peut pas être implémentée dans une seule fenêtre de données et doit être traitée dans des fenêtres de données distinctes. Il s'agit de la note 2
[Note 2. ] Nous devons insérer un rapport dans d_order, c'est-à-dire d_orderdetail, dans la liste de contrôle dans d_order (la même que dans la référence du contrôle datawindow) se trouve dw_detail (le nom par défaut est dw_1, j'ai changé le nom)
d_orderdetail ( L'exportation des données détaillées de la commande, qui est le rapport ci-dessus, référencé par la fenêtre de données dw_detail, la troisième ligne de code, peut être définie dans EITX)
1 Créez une nouvelle fenêtre de données
2. /import template xml (ci-après dénommé EITX), enregistrez sous un autre nom
3. Définissez l'utilisation du modèle sous l'exportation de données sur le nom du modèle que vous venez d'enregistrer
6a18328c58303c7e20e1d25369e13403
f8a43964807632951ff0d1b578c074505197228dbe127ae6957595a56091b5b8
157f0b229ad5633f6c1b0a7cdc6ea6fc 00c088fcdcf3bdd6b063129a514ea6b8
bab239faed32331581b803189fdf21ef
[Note 3]Remarque : lorsque nous exportons du XML dans d_order, la déclaration XML et le nœud supérieur dans d_orderdetail seront ignorés
[Note 4] Cet endroit définit la partie orderdetail, car une commande peut avoir plusieurs détails, nous devons donc définir C'est le détail de départ, qui est une boucle.
Le fichier final généré est le suivant


Le code est le suivant :

<trans> 
<transdetail> 
<order><date>20080101</date></order> 
<orderdetail><product>甲</product></orderdetail> 
<orderdetail><product>已</product></orderdetail> 
</transdetail> 
<transdetail> 
<order><date>20080102</date></order> 
<orderdetail><product>甲</product></orderdetail> 
<orderdetail><product>丙</product></orderdetail> 
</transdetail> 
</trans>
Remarque : Si on vous demande de concevoir un fichier d'interface XML, assurez-vous de prendre en compte la commodité de l'utilisateur

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn