我正在构建一个APP,它使用XML请求和响应通过HTTP POST与服务器通信。由于版权限制,我无法使用SIMPLE XML(至少部分地)执行JAXB通常会执行的操作,并且根据我在JAXB上使用的所有信息都无法在Android上使用。
我使用XmlSerializer构建请求和XMLPullParser来解析响应,但我不喜欢代码的样子,我无法在Android SDK中找到JAXB的任何标准等效项。
我是否可以使用任何SDK组件将XSD架构文件转换为Java类,然后使用marshaller / unmarshaller来处理XML文件或者使用XmlSerializer / XMLPullParser?
答案 0 :(得分:2)
我是否可以使用任何SDK组件将XSD架构文件转换为Java类
没有
我坚持使用XmlSerializer / XMLPullParser?
欢迎使用DOM或SAX代替XmlPullParser
,就像使用经典Java一样。
除了SimpleXML之外,还有several XML parsing libraries for Android。
答案 1 :(得分:0)
请参阅以前关于该主题的一些帖子:
我宁愿尝试SimpleXML。
答案 2 :(得分:0)
我有同样的问题——并且想通了。使用 jackson-module-jaxb-annotations 和 XmlToJson :
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'
}