簡體   English   中英

在Java / Groovy中將XML轉換為Object []

[英]Converting XML to Object[] in Java/Groovy

我有這樣的XML:

<jobs>
  <no>2</no>
  <job>
    <status>Completed</status>
  </job>
  <job>
    <status>In Progress</status>
  </job>
</jobs>

我嘗試了這個:

def xmlmapper = new XmlMapper()
def obj = xmlmapper.readValue(xml, Object[].class)

然后,我采用obj並對其進行迭代,但似乎所有內容都是String,並且我希望“ no”為int。

我的問題是,通過使用Jackson Mapper類獲取整數,有什么辦法嗎? 我認為,如果我先使用標准json庫將該XML轉換為JSON,然后再使用JSON轉換為Object,則它將包含整數。 傑克遜應該做同樣的事情,先轉換為json,但是xmlmapper的行為似乎有所不同,所以我不確定在這里我真的缺少什么...

您可以使用類來映射到所需字段為所需類型的位置。 例如(請參閱XXX

@Grab('com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.5.1')
import groovy.transform.ToString
import com.fasterxml.jackson.dataformat.xml.XmlMapper
import com.fasterxml.jackson.dataformat.xml.annotation.*

@ToString
class Jobs {
    Integer no // XXX
    @ToString
    static class Job {
        String status
    }
    @JacksonXmlElementWrapper(useWrapping=false)
    List<Job> job
}

def xml="""<jobs><no>2</no><job><status>Completed</status></job><job><status>In Progress</status></job></jobs>"""

def xmlmapper = new XmlMapper()
def jobs = xmlmapper.readValue(xml, Jobs)
assert jobs.no==2
assert jobs.job.size()==jobs.no
assert jobs.toString()=='Jobs(2, [Jobs$Job(Completed), Jobs$Job(In Progress)])'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM