2010-02-14 56 views
5

REST XML(不是JSON!)Web Service应该在Google App Engine和Android应用程序之间交换XML Schema指定的XML。Android和Google App Engine:支持XML绑定工具吗?

我想为两者都使用XStream,但是我无法让它适用于Google App Engine,因此对我而言,Apache XMLBeans是下一个最佳选择(JAXB在两者上都不起作用)。 但是,使用Google App Engine没有问题,但在Android上,我遇到了一些严重的异常(例如,由于使用了带有javax.xml。*包的Stax API)。

所以,

  1. 是否有任何其他XML结合可能性的GAE和Android流XML文档?
  2. 如果没有,是否可以修补Apache XMLBeans以与Android一起使用?

谢谢!

回答

0

Android缺乏对XML生成期的内置支持。由于JSON可以解析和生成JSON文档,因此Android更强大。

在修补XMLBeans方面,您可能会发现找到一些具有较少依赖性的其他软件包会更快。您不能轻易导入驻留在java.*javax.*包中的任何新代码。

2

我戳在黑暗中在这里,因为我还没有尝试过这样的事,但:从XBinder声称,他们是“在几周内”发布一个Android兼容的版本

this blog entry 。虽然目前这可能不是一种选择,但他们也会解释一下他们是如何做到的,在Android中已经存在的XmlPull支持上包装了一个StAX类似的包装器。

(我的答案原本在Android上工作XStream的另一段,但后来我再次阅读问题,发现你的问题是与得到的XStream对AppEngine上侧工作...)

+0

从文本结束,这正是我正在寻找的。现在我正在评估http: //vtd-xml.sourceforge.net/,它工作的很好,但是没有数据绑定器,只要android兼容版本出来,我就会检查它 – Ice09 2010-03-02 11:15:58

+0

你在XML数据绑定中寻找什么功能? – 2010-05-27 07:33:52

2

XML数据适用于Google App Engine和Android的绑定框架是Simple。它使用与JAXB类似的注释来注释POJO,然后可以使用XML对其进行序列化和反序列化。例如,注释对象看起来像。

@Root 
public class Pojo { 
    @Attribute 
    private String name; 
    @Element 
    private String value 

    public String getName() { 
     return name; 
    } 

    public String getValue() { 
     return value; 
    } 
} 

然后生成XML所有你需要做的是。

Serializer serializer = new Persister(); 
serializer.write(instance, outputSteam) 

要阅读,你可以做

Serializer serializer = new Persister(); 
Pojo pojo = serializer.read(Pojo.class, inputSteam) 

而且完蛋了!它具有许多其他功能和注释的强大框架。它适用于Android,Google App Engine和任何JDK 1.5+。它没有依赖性,重量很轻。欲了解更多信息,请参阅Tutorial

0

您可以使用Castor。只要确定,在Android 2.1中,不要使用默认的android SAXParser。你会得到命名空间错误。您可以通过将解析器定义为core.properties中的Xerces(以及您添加所需的JARS)来完成此操作。在android 2.2中,它可能没问题。请注意,如果您使用xerces为unmarsheler创建xmlcontext,它仍然不起作用,因为映射本身可能会使用android的SAX进行解析。它必须在核心(顶层属性文件)完成,以便即使映射也被xerces解析。最后 - 性能是如你所期望的那样缓慢...... :(祝你好运SM

1

另一种选择是Pulloid(pulloid.org)。它依赖于Android中包含的XmlPull API。现在需要使用XPP3这样的XmlPull实现 - 我不知道它是否是一个显示限制器