如何将c#中的xml数据反序列化为java?

时间:2009-07-01 15:00:40

标签: c# java xml serialization

我在c#server app和java client app中都有相同的对象。服务器XML序列化这些对象,并通过REST服务使它们可用。 Java应用程序以XML格式下载数据。将xml数据反序列化为java对象的最佳方法是什么?我目前正在使用Java org.w3c.dom类来解析xml并创建新对象。我知道某些类型如日期和字节数组必须手动处理,但是正确方向上的一点将会受到赞赏。

C#Class:

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

Java类:

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

以下是来自c#web应用程序的xml:

<?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>

4 个答案:

答案 0 :(得分:1)

Java端的一种可能方法是使用XStream。它提供了一种简单的方法,可以将XML反序列化为Java对象,而无需进行模式定义。

XStream通常期望Java类/包名称为XML元素。但是,您可以通过使用别名来修改此行为。鉴于上述要求,您需要此设施。有关详细信息,请参阅this tutorial

答案 1 :(得分:1)

为什么不在C#中序列化为JSON,然后在Java中反序列化。两个平台都有JSON支持/库。在C#端,您可以使用JSON.Net。 JSON将生成比XML小得多的轻量级文件,并且在处理时应该更快一些。

答案 2 :(得分:1)

JAXB是一种将xml架构绑定到Java类的方法。您甚至可以从架构或dtd生成类。或者,您可以使用类似xpath的表达式手动注释java类,告诉JAXB如何反序列化XML。

如果它有点重量级,那么Java提供了许多如何从文件中读取xml的选择。我喜欢commons digester和Sun的新streaming api for xml

答案 3 :(得分:1)

用作Java反序列化解决方案的

Simple库看起来非常有前途。