Ändern des Datentyps des Mapping-Input/-Output (C#, Java)

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Code Generator > Integrieren von mit MapForce generiertem Code >

Ändern des Datentyps des Mapping-Input/-Output (C#, Java)

In diesem Kapitel erfahren Sie Näheres über die Objekttypen, die Sie programmatisch verwenden können, wenn Sie MapForce-Mappings von einer benutzerdefinierten Java- oder C#-Applikation aus ausführen möchten.

 

Sie können mehrere Input- und Output-Objekte (wie z.B. Dateien, Strings, DOM-Dokumente und andere) als Parameter für die run-Methode verwenden. Die run-Methode ist die wichtigste Funktion generierter Mapping-Klassen. Sie hat einen Parameter für jede statische Quelle oder Input-Komponente im Mapping und einen Endparameter für die Output-Komponente. Komponenten, die mehrere Dateien verarbeiten, werden nicht als Parameter für die "run"-Methode angezeigt, da die Dateinamen in diesem Fall dynamisch innerhalb des Mappings verarbeitet werden.

 

Die Objekte, die Sie als Parameter für die run-Methode bereitstellen können, stehen im com.altova.io-Paket (Java) und im Altova.IO-Namespace (C#) zur Verfügung. Die Basisklassen der generierten Input- und Output-Objekte sind die folgenden:

 

C#

 

Altova.IO.Input

Altova.IO.Output

 

Java

 

com.altova.io.Input

com.altova.io.Output

 

Die als Input/Output-Parameter für die run-Methode unterstützten Objekttypen sind zusammen mit ihren anwendbaren Input/Output-Formaten in der folgenden Tabelle aufgelistet.

 

Objekttyp

XML

Microsoft Excel*

EDI* **

FlexText*

CSV

Dateien fester Länge

Dateien

J

J

J

J

J

J

Binäre Stream-Objekte

J

J

J

J

J

J

Strings

J

J

J

J

J

I/O Reader/Writer (Zeichen-Stream-Objekte)

J

J

J

J

J

DOM-Dokumente

J

 

* Nur in der MapForce Enterprise Edition unterstützte Formate

** Inkludiert X12 und HL7

 

Dateien

(In den Codedateinamen identifizierte) Dateiobjekte haben die folgende Definition:

 

C#

 

Altova.IO.FileInput(string filename)

Altova.IO.FileOutput(string filename)

 

Java

 

com.altova.io.FileInput(String filename)

com.altova.io.FileOutput(String filename)

 

 

Binäre Stream-Objekte

Binäre Stream-Objekte im generierten Code stellen eine Alternative zum Arbeiten mit physischen Dateien dar; hinsichtlich des Speicherbedarfs gibt es keine Vorteile. Binäre Stream-Objekte haben die folgende Definition:

 

C#

 

Altova.IO.StreamInput(System.IO.Stream stream)

Altova.IO.StreamOutput(System.IO.Stream stream)

 

Java

 

com.altova.io.StreamInput(java.io.InputStream stream)

com.altova.io.StreamOutput(java.io.OutputStream stream)

 

Anmerkungen

 

Binäre Stream-Objekte müssen zuerst geöffnet werden und einsatzbereit sein, bevor die run Methode aufgerufen wird.
Standardmäßig schließt die run-Methode den Stream nach dem Beenden. Um dies zu verhindern, fügen Sie vor Aufruf der run-Methode den folgenden Code ein:

 

Java

MappingMapToSomething.setCloseObjectsAfterRun(false); // Java

 

C#

MappingMapToSomething.CloseObjectsAfterRun = false;   // C#

 

 

Strings

String-Objekte haben die folgende Definition:

 

C#

 

Altova.IO.StringInput(string content)

Altova.IO.StringOutput(StringBuilder content)

 

Java

 

com.altova.io.StringInput(String xmlcontent)

com.altova.io.StringOutput()

 

Anmerkungen

 

In Java erhält StringOutput kein Argument. Inhalt kann folgendermaßen aufgerufen werden:

 

// mapping from String to (another) String
String MyText = "<here>is some XML text</here>";
 
Input input = new StringInput(MyText);
Output output = new StringOutput();
 
MappingMapToMyText.run(input, output);
 
String myTargetData = output.getString().toString();

 

Die Methode getString() gibt einen StringBuffer zurück, daher wird toString()benötigt.

 

In C# erhält StringOutput ein Argument (StringBuilder), welches Sie vorher bereitstellen müssen. Der StringBuilder kann bereits Daten enthalten, daher wird die Mapping-Ausgabe daran angehängt.

 

Excel-Quell-/Zielkomponenten können nicht von/auf Strings gemappt werden.

 

 

I/O Reader/Writer (Zeichen-Stream-Objekte)

Zeichen-Stream-Objekte haben die folgende Definition:

 

C#

 

Altova.IO.ReaderInput(System.IO.TextReader reader)

Altova.IO.WriterOutput(System.IO.TextWriter writer)

 

Java

 

com.altova.io.ReaderInput(java.io.Reader reader)

com.altova.io.WriterOutput(java.io.Writer writer)

 

Anmerkungen

 

Zeichen-Stream-Objekte müssen zuerst geöffnet werden und einsatzbereit sein, bevor die run-Methode aufgerufen wird.
Excel-Quell-/Zielkomponenten können nicht aus Zeichen-Streams ausgelesen werden oder in diese hineingeschrieben werden.
Standardmäßig schließt die run-Methode den Stream nach dem Beenden. Um dies zu verhindern, fügen Sie vor Aufruf der run-Methode den folgenden Code ein:

 

Java

MappingMapToSomething.setCloseObjectsAfterRun(false); // Java

 

C#

MappingMapToSomething.CloseObjectsAfterRun = false;   // C#

 

 

 

DOM-Dokumente

DOM-Dokumente haben die folgende Definition:

 

C#

 

Altova.IO.DocumentInput(System.Xml.XmlDocument document)

Altova.IO.DocumentOutput(System.Xml.XmlDocument document)

 

Java

 

com.altova.io.DocumentInput(org.w3c.dom.Document document)

com.altova.io.DocumentOutput(org.w3c.dom.Document document)

 

Anmerkungen

 

Das an den DocumentOutput-Konstruktor als Zielkomponente übergebene Dokument muss leer sein.
Nach Aufruf von run enthält das vom Konstruktor von DocumentOutput generierte DOM-Dokument bereits gemappte Daten, daher ist "In Dokument speichern" nicht mehr notwendig. Nach dem Mappen können Sie das Dokument nach Bedarf bearbeiten.
Nur XML-Daten können auf DOM-Dokumente gemappt werden.

 

 

Beispiel

 

Angenommen, Sie möchten den von MapForce generierten Code in Ihre Java-Applikation integrieren. Ihr MapForce Mapping besteht aus zwei XML-Quelldokumenten und einer Textdatei als Zielkomponente. Wenn Sie den MapForce-Code generieren, sieht die run-Funktion folgendermaßen aus:

 

void run(Input in1, Input in2, Output out1);

 

Nehmen wir außerdem an, dass Sie für Ihre Applikation Daten von einer lokalen Datei und einem binären Stream auf einen Zeichen-Stream mappen müssen. Da aus anderen Quellen gelieferte Daten verwendet werden, müssen Quelle und Ziel in Ihrer Applikation folgendermaßen deklariert werden:

 

String filename; // Declare the source of the first input
Java.io.InputStream stream; // Declare the source of the second input
Java.io.Writer writer; // Declare the output as character stream

 

Für die MapForce-generierte run-Funktion müssen die folgenden Wrapper konstruiert werden:

 

// com.altova.io is considered imported here:
Input input1 = new FileInput(filename);
Input input2 = new StreamInput(stream);
Output output1 = new WriterOutput(writer);

 

 

Sie können jetzt die MapForce-generierte run-Funktion aufrufen:

 

MappingMapToSomething.run(input1, input2, output1);

 

 

Das Verhalten in C# ist beinahe gleich, mit der Ausnahme, dass run nun Run genannt wird und die .NET Stream und Reader/Writer-Klassen einen anderen Namen haben.

 

Auf dieselbe Art können Sie auch andere Input- und Output-Typen wie z.B. Strings oder DOM-Dokumente verwenden.


© 2019 Altova GmbH