Palladin007
assimiliert
[Java] Xml-Daten-Schnittstelle zwischen Java und C# für HashMap "selber" serialisiern
Moin,
ich brauche eine Daten-Verbindung zwischen Java und C#. Was bietet sich da mehr an als XML?
Also hab ich mir folgende Methoden geschrieben:
Das hier sind die Test-Zeilen:
Und das hier ist die Klasse Rule:
Allerdings ergibt das nur folgende Datei:
Außerdem hab ich das Problem, dass die XML-Datei auch von C# verstanden werden soll.
Daher meine Frage, wie kann ich selber fest legen, welches Attribut unter welchem Namen mit welchem Wert geschrieben wird?
In C# musste ich dafür nur das Interface IXmlSerializable implementieren, bekam dann drei Methoden und in zwei davon konnte ich genau fest legen, wie was geschrieben oder gelesen wird.
Gibt es etwas vergleichbares auch in Java?
Gruß
Moin,
ich brauche eine Daten-Verbindung zwischen Java und C#. Was bietet sich da mehr an als XML?
Also hab ich mir folgende Methoden geschrieben:
PHP:
public static boolean Serialize(Object obj, String FilePath)
{
XMLEncoder enc = null;
try
{
enc = new XMLEncoder( new FileOutputStream(FilePath) );
enc.writeObject(obj);
return true;
}
catch (Exception e)
{
return false;
}
finally
{
if (enc != null) enc.close();
}
}
public static Object Deserialize(String FilePath)
{
XMLDecoder dec = null;
try
{
dec = new XMLDecoder(new FileInputStream(FilePath));
return dec.readObject();
}
catch (Exception e)
{
return null;
}
finally
{
if (dec != null) dec.close();
}
}
Das hier sind die Test-Zeilen:
PHP:
HashMap<Integer, Rule> rules = new HashMap<>();
rules.put(1, new Rule(1,1,"1"));
rules.put(2, new Rule(2,1,"2"));
rules.put(3, new Rule(3,1,"3"));
Serialize(rules, "asdf.xml");
Und das hier ist die Klasse Rule:
PHP:
@XmlRootElement(name="Regel")
public class Rule
{
private int ID;
public int getID() { return this.ID; }
private int Severity;
public int getSeverity() { return this.Severity; }
private String RuleText;
public String getRuleText() { return this.RuleText; }
public Rule() { }
public Rule(int ID, String RuleText)
{
this(ID, 0, RuleText);
}
public Rule(int ID, int Severity, String RuleText)
{
this.ID = ID;
this.Severity = Severity < 0 ? 0 : (Severity > 10 ? 10 : Severity);
this.RuleText = RuleText;
}
}
Allerdings ergibt das nur folgende Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.7.0_21" class="java.beans.XMLDecoder">
<object class="java.util.HashMap">
<void method="put">
<int>1</int>
<object class="me.SirPalladin.PlayerData.Rule"/>
</void>
<void method="put">
<int>2</int>
<object class="me.SirPalladin.PlayerData.Rule"/>
</void>
<void method="put">
<int>3</int>
<object class="me.SirPalladin.PlayerData.Rule"/>
</void>
</object>
</java>
Außerdem hab ich das Problem, dass die XML-Datei auch von C# verstanden werden soll.
Daher meine Frage, wie kann ich selber fest legen, welches Attribut unter welchem Namen mit welchem Wert geschrieben wird?
In C# musste ich dafür nur das Interface IXmlSerializable implementieren, bekam dann drei Methoden und in zwei davon konnte ich genau fest legen, wie was geschrieben oder gelesen wird.
Gibt es etwas vergleichbares auch in Java?
Gruß