Das Datenfenster in Powerbuilder ist im Grunde genommen sehr gut und sehr effizient. Wenn ich in den letzten Tagen XML-Dateien für Projekte exportieren muss, verwende ich pb9 (die XML-Export- und Importfunktion). ist von Powerbuilder9.0 (Funktionen hinzugefügt) hat eine Demo erstellt, um die Machbarkeit zu überprüfen
Die Beispieldatei lautet wie folgt (die DTD wird nicht veröffentlicht, aber es wird ein einfaches Beispiel gegeben)
Der Code lautet wie folgt:
<trans> <transdetail> <order><date/></order> <orderdetail><product/></orderdetail> <orderdetail><product/></orderdetail> </transdetail> <transdetail> <order><date/></order> <orderdetail><product/></orderdetail> <orderdetail><product/></orderdetail> </transdetail> </trans>
Meine Tischstruktur, ich denke, alle Tische sollten auch so gestaltet sein
Auftrag (Kundenauftrag, einschließlich Kunde, Datum und sonstige Informationen)
orderdetail (Kundenauftragsdetails, einschließlich Produkt-, Mengen- und Preisinformationen)
An diesem Punkt kann eine anspruchsvolle Person möglicherweise auf einen Blick erkennen, dass es einige Probleme mit der Formatierung dieser XML gibt. Dies kann zum Beispiel sinnvoller sein
Der Code lautet wie folgt:
<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>
Aber ich bin eine ZF-Abteilung und kann es nicht ändern, also muss ich es selbst tun Wenn es beschissen ist
Der Verarbeitungscode in pb9: Tatsächlich sind in pb9 nur drei Codezeilen geschrieben, und der eigentliche Code ist eigentlich nur eine Zeile, die hinzugefügt werden soll. Es gibt ein Fenster mit einem Datenfenster und Eine Schaltfläche darauf, und diese Codezeile ist in die Schaltfläche geschrieben, haha
dw_export.save("c:test.xml",xml!,false)
Tatsächlich muss es wirklich verarbeitet werden Was Es ist erforderlich, zwei Datenfenster zu definieren, hauptsächlich deren XML-Vorlagen:
d_order (Export der Bestellkopfdaten, zweite Codezeile, kann in EITX festgelegt werden)
1 Erstellen Sie ein neues Datenfenster (hier beachten, Wenn die bedingten Daten mehrere Zeilen haben, ist es am besten, sie in SQL zu gruppieren, andernfalls werden die generierten Daten wiederholt)
3. Klicken Sie mit der rechten Maustaste in den Bearbeitungsbereich der Export-/Importvorlage XML (im Folgenden als EITX bezeichnet). unter anderem A-Namen speichern
4. Stellen Sie die Verwendungsvorlage unter Datenexport auf den Vorlagennamen ein, den Sie gerade gespeichert haben
Die definierte Vorlage lautet wie folgt:
Der Code lautet wie folgt:
<?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>
Es sind zwei Punkte zu beachten
[Hinweis 1] Dieses Startdetail steuert die Datenzirkulation und muss daher ausgewählt werden, aber jede XML kann nur einen definieren, und ein Problem wird auftreten Wenn ich den Header nach der Schleife bestelle, kann ich daraus schließen, dass er nicht in einem Datenfenster implementiert werden kann und in separaten Datenfenstern verarbeitet werden muss 2] Wir müssen einen Bericht in d_order einfügen. Das heißt, d_orderdetail, in der Kontrollliste in d_order (das gleiche wie in der Datenfenster-Steuerreferenz) ist dw_detail (der Standardname ist dw_1, ich habe den Namen geändert)
d_orderdetail (Auftragsdetaildatenexport, der oben genannte Bericht ist, referenziert durch dw_detail Datenfenster, die dritte Codezeile, kann in EITX eingestellt werden)
Erstellen Sie ein neues Datenfenster
2 Bearbeitungsbereich für die Export-/Import-XML-Vorlage (im Folgenden als EITX bezeichnet), speichern Sie sie unter einem anderen Namen
3. Stellen Sie „Vorlage verwenden“ unter „Datenexport“ auf den soeben gespeicherten Vorlagennamen ein