Exemple de code d'application XML dans Powerbuilder

Y2J
Libérer: 2017-04-25 14:59:27
original
2248 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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



[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>
Copier après la connexion
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!

Étiquettes associées:
xml
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!