2009-07-01 9 views
2

Ich habe identische Objekte sowohl in einer C# -Server-App als auch in einer Java-Client-App. Das Server-XML serialisiert diese Objekte und stellt sie über einen REST-Service zur Verfügung. Die Java-App lädt die Daten im XML-Format herunter. Was ist der beste Weg, um die XML-Daten zu meinen Java-Objekten zu deserialisieren? Ich verwende derzeit Java-org.w3c.dom-Klassen, um das XML zu analysieren und neue Objekte zu erstellen. Ich verstehe, dass bestimmte Typen wie Daten und Byte-Arrays manuell gehandhabt werden müssen, aber ein Punkt in der richtigen Richtung würde geschätzt werden.Wie XML-Daten von C# zu Java deserialisieren?

C# Klasse:

public class Sample { 
    public string MyText { get; set; } 
    public bool Flag { get; set; } 
    //many more fields 
} 

Java-Klasse:

public class Sample { 
    public String MyText; 
    public boolean Flag; 
} 

Hier ist das XML, das ist von dem # Web-App c kommen:

<?xml version="1.0" encoding="utf-8"?> 
<Sample xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <MyText>Blah Blah</MyText> 
    <Flag>false</Flag> 
</Sample> 

Antwort

1

Ein möglichen Ansatz auf dem Java-Ende ist zu verwenden XStream. Es bietet eine einfache Möglichkeit zum Deserialisieren von XML in Java-Objekte, ohne dass eine Schemadefinition erforderlich ist.

XStream erwartet normalerweise Java-Klassen-/Paketnamen als XML-Elemente. Sie können dieses Verhalten jedoch mithilfe von Aliasnamen ändern. Angesichts der oben genannten Anforderungen benötigen Sie diese Einrichtung. Weitere Informationen finden Sie unter this tutorial.

1

Warum nicht zu JSON in C# serialisieren und dann in Java deserialisieren. Beide Plattformen verfügen über JSON-Unterstützung/Bibliotheken. Von der C# -Seite können Sie JSON.Net verwenden. JSON wird eine Datei mit geringem Gewicht erzeugen, die viel kleiner als XML ist und bei der Verarbeitung etwas schneller sein sollte.

+0

Ich möchte diesen Ansatz verwenden, jedoch verwenden bereits bestehende Systeme dieses Datenformat. – user82334

1

JAXB ist eine Möglichkeit, ein XML-Schema an Java-Klassen zu binden. Sie können Ihre Klassen sogar aus einem Schema oder aus einem dtd generieren. Oder Sie können Ihre Java-Klassen manuell mit xpath-ähnlichen Ausdrücken annotieren, die JAXB mitteilen, wie XML deserialisiert werden soll.

Wenn das ein kleines Schwergewicht ist, dann bietet Java viele Möglichkeiten, wie man XML aus einer Datei lesen kann. Ich mag commons digester, und Sun's newish streaming api for xml.

1

Simple Bibliothek, als Java-Deserialisierungslösung verwendet, sieht ziemlich vielversprechend aus.

Verwandte Themen