【问题标题】:How to deserialize xml data from c# to java?如何将xml数据从c#反序列化为java?
【发布时间】:2009-07-01 15:00:40
【问题描述】:

我在 C# 服务器应用程序和 Java 客户端应用程序中都有相同的对象。服务器 XML 序列化这些对象并通过 REST 服务使它们可用。 Java 应用程序以 XML 格式下载数据。将 xml 数据反序列化为我的 java 对象的最佳方法是什么?我目前正在使用 Java org.w3c.dom 类来解析 xml 并创建新对象。我知道某些类型(如日期和字节数组)必须手动处理,但我们将不胜感激。

C# 类:

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>

【问题讨论】:

    标签: c# java xml serialization


    【解决方案1】:

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

    XStream 通常将 Java 类/包名称视为 XML 元素。但是,您可以通过使用别名来修改此行为。鉴于上述要求,您将需要此设施。请参阅this tutorial 了解更多信息。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我想使用这种方法,但是现有系统已经在使用这种数据格式。
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        Simple 库,用作 Java 反序列化解决方案,看起来很有前途。

        【讨论】:

          猜你喜欢
          • 2018-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-05
          • 1970-01-01
          • 2015-01-26
          • 1970-01-01
          相关资源
          最近更新 更多