Android中JAXB的标准等效项

时间:2015-10-06 23:15:05

标签: java android xml xsd jaxb

我正在构建一个APP,它使用XML请求和响应通过HTTP POST与服务器通信。由于版权限制,我无法使用SIMPLE XML(至少部分地)执行JAXB通常会执行的操作,并且根据我在JAXB上使用的所有信息都无法在Android上使用。

我使用XmlSerializer构建请求和XMLPullParser来解析响应,但我不喜欢代码的样子,我无法在Android SDK中找到JAXB的任何标准等效项。

我是否可以使用任何SDK组件将XSD架构文件转换为Java类,然后使用marshaller / unmarshaller来处理XML文件或者使用XmlSerializer / XMLPullParser?

3 个答案:

答案 0 :(得分:2)

  

我是否可以使用任何SDK组件将XSD架构文件转换为Java类

没有

  

我坚持使用XmlSerializer / XMLPullParser?

欢迎使用DOM或SAX代替XmlPullParser,就像使用经典Java一样。

除了SimpleXML之外,还有several XML parsing libraries for Android

答案 1 :(得分:0)

答案 2 :(得分:0)

我有同样的问题——并且想通了。使用 jackson-module-jaxb-annotationsXmlToJson :

public static String jaxbObjectToXML(SomeClass object)
    {
        JaxbAnnotationModule module = new JaxbAnnotationModule();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.registerModule(module);

        try {
            JsonToXml jsonToXml = new JsonToXml.Builder(
                    objectMapper.writeValueAsString(object)).build();
            return jsonToXml.toString();
        }catch (JsonProcessingException e) {
            e.printStackTrace();
        }

        return null;
    }

依赖:

dependencies {
    ...
    implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
    implementation 'com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.4.0'
    implementation 'com.github.smart-fun:XmlToJson:1.5.1'
}