2012-01-17 60 views
0

在我的Android应用程序中,我需要与期望编组对象的复杂类的网络服务器通信。这些自定义类是从WSDL文件生成的,所以它们已经带有注释。服务器使用JAXB进行编组和取消编组。在Android中使用JAXBContext的好选择?

因此,在客户端,使用JAXB,我想简单的:

JAXBContext jc = JAXBContext.newInstance("schema_definition_path"); 
Marshaller m = jc.createMarshaller(); 
Unmarshaller u = jc.createUnmarshaller(); 

...然后使用的Marshaller和Unmarshaller的情况下工作的序列化/反序列化的自定义对象。因为在移动应用程序中使用重量级的JAXB库并不是一个好主意,所以我正在寻找一种替代方法来完成JAXB为我所做的工作。

我检出了Simple XML Serialization,但似乎没有提供这种功能。我只能给unmarshaller一个类而不是模式定义路径。这样做会导致一个不完整的xml文档,只包含根元素。

任何人都可以指向正确的方向吗?这甚至有可能吗?我应该使用不同的lib - 哪一个?我只是滥用SimpleXML?

+0

据我所知,我看过,Simple XML是唯一一个能够在android上接近JAXB功能的库。我会再试一次。 – 2012-01-18 21:06:45

+0

感谢您的评论。我多玩了一会儿。我可以复制自定义类并用SimpleXML注释替换JAXB。这看起来不是一个好的解决方案,并且需要大量的手动更改,因为对象嵌套得相当深。 从javax. *命名空间复制JAXB所需的类并重新包装它们是否可行? – Bashorings 2012-01-19 07:39:47

+0

所以,真正的问题是,哪个解决方案不太难看;-) – Bashorings 2012-01-19 07:41:37

回答

0

由于找不到更好的方法(请参阅原始问题的评论),我决定使用Android中包含的XML Pull API实现手动转换对象。

下面是关于如何使用它一个简短的教程:http://www.ibm.com/developerworks/opensource/library/x-android/

我并不是说这是一个很好的方式,但它是我能想到的唯一的事情会工作,在那里我没有触摸原来的课程。