Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中使用JAXBContext的好选择?_Android_Xml_Web Services_Jaxb_Webservice Client - Fatal编程技术网

Android中使用JAXBContext的好选择?

Android中使用JAXBContext的好选择?,android,xml,web-services,jaxb,webservice-client,Android,Xml,Web Services,Jaxb,Webservice Client,在我的Android应用程序中,我需要与需要复杂类的封送对象的Web服务器对话。这些自定义类是从WSDL文件生成的,因此它们已经带有注释。服务器使用JAXB进行marhalling和unmarhalling 因此,在客户端,使用JAXB,我可以简单地做到这一点: JAXBContext jc = JAXBContext.newInstance("schema_definition_path"); Marshaller m = jc.createMarshaller(); Unmarshaller

在我的Android应用程序中,我需要与需要复杂类的封送对象的Web服务器对话。这些自定义类是从WSDL文件生成的,因此它们已经带有注释。服务器使用JAXB进行marhalling和unmarhalling

因此,在客户端,使用JAXB,我可以简单地做到这一点:

JAXBContext jc = JAXBContext.newInstance("schema_definition_path");
Marshaller m = jc.createMarshaller();
Unmarshaller u = jc.createUnmarshaller();
…然后使用封送拆收器和解封送拆收器实例对自定义对象进行序列化/反序列化

由于在移动应用程序中使用重量级JAXB库不是一个好主意,因此我正在寻找一种替代方法来完成JAXB为我所做的事情

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


有人能给我指一下正确的方向吗?这可能吗?我应该使用不同的库吗?哪一个?我只是误用了SimpleXML

因为我找不到更好的方法来查看原始问题的注释,所以我决定使用Android中包含的XML Pull API实现手动转换对象

以下是关于如何使用它的简短教程:


我并不是说这是一个好方法,但这是我能想到的唯一可行的方法,而且我不必接触原始类

据我所知和我所看到的,SimpleXML是唯一一个接近android上类似JAXB功能的库。我会再给它一次机会。谢谢你的评论。我又玩了一会儿。我可以复制自定义类,并用SimpleXML注释替换JAXB。这似乎不是一个好的解决方案,它需要大量的手动更改,因为对象嵌套得很深。从javax.*名称空间复制JAXB所需的类并重新打包是否可行?所以,问题是,哪种解决方案不那么难看-是的,这将需要一些手动更改,但只需要执行一次。或者您可以编写一个JAXB到简单XML转换器。但这可能需要更长的时间…至于复制所需的javax.*名称空间代码。大概我没有尝试过,但它可能会起作用。虽然这可能比转换XML注释需要更多的工作,但是如果您尝试了,那么我将非常有兴趣看到您的结果。好的,我将进一步研究这个问题,并在找到解决方案后发布一个解决方案。