java - XML - SimpleFramework 解析为 Kotlin/JAVA
问题描述
我正在尝试将 xml 数据解析为 Kotlin/Java,但无法弄清楚如何正确执行。简单框架抛出
org.simpleframework.xml.core.PersistenceException:构造函数与类 openaire.model.Publication 不匹配
这并没有真正帮助。
XML:
<response>
<header>
<size>60</size>
<page>1</page>
<total>116600160</total>
</header>
<publications>
<publication>
<openaireid>od______1318::206c086e81631b3cde0eca4acb2d0ea2</openaireid>
<doi>10.22337/1524-5845-2016-12-3-104-113</doi>
<doi>10.22337/1524-5845-2016-12-3-104-113</doi>
<description>Peer reviewed</description>
<publicationtype>Article</publicationtype>
<title>Neuroleptiques à uridol (R16341)</title>
<authors>
<author>Bobon, Jean</author>
<author>Mélon, Jean</author>
</authors>
<dateofacceptance>1970-01-01</dateofacceptance>
<sourcejournal>Crossref</sourcejournal>
<sourcejournal>Neuroleptiques</sourcejournal>
<webresource>http://ijccse.iasv.ru/</webresource>
<webresource>https://academic.microsoft.com</webresource>
<bestlicense>OPEN</bestlicense>
</publication>
.....
</publications>
</response>
Kotlin Class:我认为错误可能出在元素列表 doi、来源期刊或网络资源中。
@Root(name = "response", strict = false)
class OpenaireModel @JvmOverloads constructor(
var header: Header,
@field:Element(name = "publications")
var publications: Publications,
)
@Root(name = "header", strict = false)
class Header @JvmOverloads constructor(
@field:Element(name = "size")
var size: Int,
@field:Element(name = "page")
var page: Int,
@field:Element(name = "total")
var total: Int
)
@Root(name = "authors", strict = false)
class Authors @JvmOverloads constructor(
@field:ElementList(inline = true, required = false)
var author: List<String> = mutableListOf()
)
@Root(name = "publication", strict = false)
class Publication @JvmOverloads constructor(
@field:Element(name = "openaireid")
var openaireid: String? = null,
@field:ElementList(
required = false,
name = "doi",
entry = "doi",
inline = true,
empty = true
)
var dois: List<Doi>? = null,
@field:Element(name = "description", required = false)
var description: String? = null,
@field:Element(name = "publicationtype")
var publicationtype: String? = null,
@field:Element(name = "title")
var title: String? = null,
@field:Element(name = "authors")
var authors: Authors,
@field:ElementList(
required = false,
name = "sourcejournal",
entry = "sourcejournal",
inline = true,
empty = true
)
var sources: List<Sourcejournal>? = null,
@field:Element(name = "dateofacceptance")
var dateofacceptance: String? = null,
@field:ElementList(
required = false,
name = "webresource",
entry = "webresource",
inline = true,
empty = true
)
var resources: List<Webresource>? = null,
@field:Element(name = "bestlicense")
var bestlicense: String? = null
)
@Root(name = "webresource", strict = false)
class Webresource @JvmOverloads constructor(
@field:Text
var text: String? = null
)
@Root(name = "sourcejournal", strict = false)
class Sourcejournal @JvmOverloads constructor(
@field:Text
var text: String? = null
)
@Root(name = "doi", strict = false)
class Doi @JvmOverloads constructor(
@field:Text
var text: String? = null
)
@Root(name = "publications", strict = false)
class Publications @JvmOverloads constructor(
@field:ElementList(inline = true)
var publication: List<Publication>
)
解决方案
推荐阅读
- python - python:检查数据框列:每组是否有多个值?
- r - 将任何与 dplyr 一起使用
- .net - IIS 日志失败:Microsoft.AspNetCore.Server.Kestrel[13] JwtBearerOptions
- laravel - 方法 405 是不允许的,但是在 API 路由中我定义了 POST
- python - python - scrapy,一一打印
- javascript - 如何使用 Google 跟踪代码管理器 HTML 标记中的循环动态填充数组?- 销售队伍营销云收集器标签
- zapier - Zapier CLI:当依赖字段更改时,如何清除输入字段的值?
- angular - 为什么我的 HTTP 授权标头中删除了“承载”一词
- jquery - Mapkit JS:显示更大的源和目标图标并禁用单击
- python - 为什么我不能使用 cv2.split 结果作为 cv2.bitwise_and 的掩码?