我正在尝试使用SimpleXML将改装xml响应序列化到一个对象中。
但是出现以下例外情况:
org.simpleframework.xml.core.值必需异常:无法满足@org.simpleframework.xml.ElementList(data=false,空=true,入口=,内联=true,名称=ALLFile,必需=true,类型=无效)字段'file"
响应示例:
<LIST>
<ALLFile>
<File>
<NAME>SOME FILE NAME</NAME>
<FPATH>SOME FILE PATH</FPATH>
<SIZE>160053622</SIZE>
<TIMECODE>1299673239</TIMECODE>
<TIME>2018/11/23 14:04:46</TIME>
<ATTR>33</ATTR>
</File>
</ALLFile>
<ALLFile>
<File>
<NAME>SOME FILE NAME</NAME>
<FPATH>SOME FILE PATH</FPATH>
<SIZE>160053622</SIZE>
<TIMECODE>1299673559</TIMECODE>
<TIME>2018/11/23 14:14:46</TIME>
<ATTR>33</ATTR>
</File>
</ALLFile>
</LIST>
对象:
@Root(name = "LIST", strict = false)
data class ListResponse @JvmOverloads constructor(
@field:ElementList(name = "ALLFile", inline = true) var files: List<GetVideosResponse>? = null
)
@Root(strict = false, name = "File")
data class GetVideosResponse @JvmOverloads constructor(
@field:Element(name = "NAME", required = false) var name: String? = null,
@field:Element(name = "FPATH", required = false) var fPath: String? = null,
@field:Element(name = "SIZE", required = false) var size: Int? = null,
@field:Element(name = "TIMECODE", required = false) var timeCode: Long? = null,
@field:Element(name = "TIME", required = false) var time: String? = null,
@field:Element(name = "ATTR", required = false) var attr: Int? = null)
我收到来自服务器的200响应,因此可以排除我的请求逻辑问题。这让我相信问题在于序列化对象,有什么想法吗?
找到了解决这个问题的方法,不一定是答案,但对我来说很有效。。。
我将XML响应作为字符串,将其转换为JSON,然后使用我常用的JSON序列化库(moshi)将JSON序列化为对象。
private fun parseXmlToJsonObject(xml: String) : String {
var jsonObj: JSONObject? = null
try {
jsonObj = XML.toJSONObject(xml)
} catch (e: JSONException) {
Log.e("JSON exception", e.message)
e.printStackTrace()
}
return jsonObj.toString()
}
fun<T> parseResponse(xml: String, clazz: Class<T>) : T {
try {
return initializeMoshi().adapter(clazz).fromJson(parseXmlToJsonObject(xml))!!
}catch (e: IOException){
throw IllegalArgumentException("Could not deserialize: $xml into class: $clazz")
}
}
private fun initializeMoshi(): Moshi {
return Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
}
并这样称呼它:
val myObject = parseResponse(response.body()!!.string(), MyJsonClass::class.java)
我正在尝试使用kotlin中的simplexml解析rss提要。 该订阅源是itunes的顶级播客订阅源 返回的数据具有以下结构: 我关心的部分是条目标签包含的播客列表。 我的模型类如下所示: 我有一个简单的单元测试,从文件中加载xml,将其传递给简单的exml反序列化器,然后将输出与一些预期的模型进行比较。 当我运行测试时,我得到一个异常: 向@ElementList注释中添加必需=false会
问题内容: 我正在尝试从此graphml创建节点和边缘对象。我有一些很棒的建议,告诉我在进一步研究中使用多个软件包,因为这是我用于simplexml的android实现。 http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#nested 我从节点开始。我已经创建了节点类: 在我的mainActivity中,
我使用改造2.7.1与静态编程语言协程。 我的改装服务定义如下: 此调用返回HTTP 204无内容响应,这会导致改装时崩溃: 如何使用协程处理改造中的204响应而不崩溃?
我正在努力把这个改型班翻译成科特林。它基本上是一个作为客户机工作的单例,我不确定我的Kotlin实现。UserAPI和ProfileAPI只是接口。 这是我的Kotlin实现。正如我所理解的,当类实例化时,init块将首先执行。 但有些事情告诉我,这不是正确的方法,或者可以做得更好。这里有什么我可以改进的吗? 更新!!! 可以吗?
我试图使用SimpleXML序列化HealthCase类的对象。我能够正确地序列化所有内容,除了测试对象的ArrayList和每个测试对象拥有的图像对象的ArrayList。所有类的每个字段都有适当的访问器和突变器方法,但是当我尝试序列化时,会抛出各种xml复合写入错误,并且不会写入相关的XML文件。 HealthCase类(不包括方法): 测试类别(不包括方法): 图像类(不包括方法): 我应该
问题内容: 如何使用simpleXML在xml文件中编辑值? 我知道如何创建文件,但不知道如何编辑现有文件中的值? 问题答案: 确保可以使用SimpleXML进行编辑: 看一下例子。