如何在对象中转换具有重复字段 iava 8 的 xml

如何解决如何在对象中转换具有重复字段 iava 8 的 xml

我必须在 java 对象中转换一个 xml 文件并且它工作正常,直到我到达元素跟踪。

    <?xml version="1.0" encoding="UTF-8"?>
<ELENCO>
   <SPEDIZIONE>
      <NumSped><![CDATA[610144853]]></NumSped>
      <Bda><![CDATA[0]]></Bda>
      <DataPartenza><![CDATA[06/04/2021]]></DataPartenza>
      <SedePartenza><![CDATA[M7]]></SedePartenza>
      <LocalitaSedePartenza><![CDATA[PAVIA]]></LocalitaSedePartenza>
      <Destinatario><![CDATA[simoni c/o marcoccia multiserv]]></Destinatario>
      <IndirizzoDestinazione><![CDATA[Via Volsci,30]]></IndirizzoDestinazione>
      <CapDestinatario><![CDATA[03100]]></CapDestinatario>
      <CittaDestinazione><![CDATA[frosinone]]></CittaDestinazione>
      <SedeDestinazione><![CDATA[FROSINONE]]></SedeDestinazione>
      <LocalitaSedeDestinazione><![CDATA[Frosinone]]></LocalitaSedeDestinazione>
      <ProvinciaSedeDestinazione><![CDATA[FR]]></ProvinciaSedeDestinazione>
      <CapSedeDestinazione><![CDATA[03100]]></CapSedeDestinazione>
      <IndirizzoSedeDestinazione><![CDATA[Via Armando Vona]]></IndirizzoSedeDestinazione>
      <TelefonoSedeDestinazione><![CDATA[+39 0775 937028]]></TelefonoSedeDestinazione>
      <FaxSedeDestinazione><![CDATA[+39 0775 880500]]></FaxSedeDestinazione>
      <StatoSpedizione><![CDATA[Consegnato]]></StatoSpedizione>
      <DataConsegna><![CDATA[07/04/2021]]></DataConsegna>
      <OraConsegna><![CDATA[11:57]]></OraConsegna>
      <Firma><![CDATA[ARMANDO  SIMONI]]></Firma>
      <NumeroColli><![CDATA[1]]></NumeroColli>
      <Peso><![CDATA[0,4]]></Peso>
      <Contrassegno><![CDATA[0,00]]></Contrassegno>
      <TRACKING>
         <Data><![CDATA[07/04/21]]></Data>
         <Ora><![CDATA[11:57]]></Ora>
         <Luogo><![CDATA[Frosinone]]></Luogo>
         <Stato><![CDATA[CONSEGNATA]]></Stato>
         <Note><![CDATA[Armando  Simoni]]></Note>
         <Codice><![CDATA[906]]></Codice>
         <Data><![CDATA[07/04/21]]></Data>
         <Ora><![CDATA[09:19]]></Ora>
         <Luogo><![CDATA[Frosinone]]></Luogo>
         <Stato><![CDATA[Consegna prevista nel corso della giornata odierna]]></Stato>
         <Note />
         <Codice><![CDATA[905]]></Codice>
         <Data><![CDATA[07/04/21]]></Data>
         <Ora><![CDATA[09:16]]></Ora>
         <Luogo><![CDATA[Frosinone]]></Luogo>
         <Stato><![CDATA[Arrivata nella Sede GLS locale.]]></Stato>
         <Note />
         <Codice><![CDATA[904]]></Codice>
         <Data><![CDATA[06/04/21]]></Data>
         <Ora><![CDATA[17:50]]></Ora>
         <Luogo><![CDATA[Pavia]]></Luogo>
         <Stato><![CDATA[Partita dalla sede mittente. In transito.]]></Stato>
         <Note />
         <Codice><![CDATA[902]]></Codice>
         <Data><![CDATA[06/04/21]]></Data>
         <Ora />
         <Luogo><![CDATA[Pavia]]></Luogo>
         <Stato><![CDATA[Spedizione registrata nei nostri sistemi ma non ancora partita]]></Stato>
         <Note />
         <Codice><![CDATA[901]]></Codice>
      </TRACKING>
   </SPEDIZIONE>
</ELENCO>

在这个元素中,我有几个重复的字段,我想分成几个对象。如何在列表或数组中进行转换?

这是我用来转换java8 Object中的xml的代码

JAXBContext jaxbContext = JAXBContext.newInstance(Elenco.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Elenco elenco = (Elenco) jaxbUnmarshaller.unmarshal(new StringReader(readLine));

这是 Elenco 课程:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="ELENCO")
@XmlType(name = "",propOrder = {
    "SPEDIZIONE"
})
public class Elenco {
    private Spedizione SPEDIZIONE;

    public Elenco() {
    }
    
    public Elenco(Spedizione elenco) {
        this.SPEDIZIONE = elenco;
    }

    public Spedizione getELENCO() {
        return SPEDIZIONE;
    }

    public void setELENCO(Spedizione ELENCO) {
        this.SPEDIZIONE = ELENCO;
    }
    
}

Spedizione 类:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "",propOrder = {
    "NumSped","Bda","DataPartenza","SedePartenza","LocalitaSedePartenza","Destinatario","IndirizzoDestinazione","CapDestinatario","CittaDestinazione","SedeDestinazione","LocalitaSedeDestinazione","ProvinciaSedeDestinazione","CapSedeDestinazione","IndirizzoSedeDestinazione","TelefonoSedeDestinazione","FaxSedeDestinazione","StatoSpedizione","DataConsegna","OraConsegna","Firma","NumeroColli","Peso","Contrassegno","TRACKING"
})
public class Spedizione{
    private String NumSped;
    private String Bda;
    private String DataPartenza;
    private String SedePartenza;
    private String LocalitaSedePartenza;
    private String Destinatario;
    private String IndirizzoDestinazione;
    private String CapDestinatario;
    private String CittaDestinazione;
    private String SedeDestinazione;
    private String LocalitaSedeDestinazione;
    private String ProvinciaSedeDestinazione;
    private String CapSedeDestinazione;
    private String IndirizzoSedeDestinazione;
    private String TelefonoSedeDestinazione;
    private String FaxSedeDestinazione;
    private String StatoSpedizione;
    private String DataConsegna;
    private String OraConsegna;
    private String Firma;
    private String NumeroColli;
    private String Peso;
    private String Contrassegno;
    private List<Trackparcel> TRACKING;


    

    public String getNumSped() {
        return NumSped;
    }

    public void setNumSped(String NumSped) {
        this.NumSped = NumSped;
    }

    public String getBda() {
        return Bda;
    }

    public void setBda(String Bda) {
        this.Bda = Bda;
    }

    public String getDataPartenza() {
        return DataPartenza;
    }

    public void setDataPartenza(String DataPartenza) {
        this.DataPartenza = DataPartenza;
    }

    public String getSedePartenza() {
        return SedePartenza;
    }

    public void setSedePartenza(String SedePartenza) {
        this.SedePartenza = SedePartenza;
    }

    public String getLocalitaSedePartenza() {
        return LocalitaSedePartenza;
    }

    public void setLocalitaSedePartenza(String LocalitaSedePartenza) {
        this.LocalitaSedePartenza = LocalitaSedePartenza;
    }

    public String getDestinatario() {
        return Destinatario;
    }

    public void setDestinatario(String Destinatario) {
        this.Destinatario = Destinatario;
    }

    public String getIndirizzoDestinazione() {
        return IndirizzoDestinazione;
    }

    public void setIndirizzoDestinazione(String IndirizzoDestinazione) {
        this.IndirizzoDestinazione = IndirizzoDestinazione;
    }

    public String getCapDestinatario() {
        return CapDestinatario;
    }

    public void setCapDestinatario(String CapDestinatario) {
        this.CapDestinatario = CapDestinatario;
    }

    public String getCittaDestinazione() {
        return CittaDestinazione;
    }

    public void setCittaDestinazione(String CittaDestinazione) {
        this.CittaDestinazione = CittaDestinazione;
    }

    public String getSedeDestinazione() {
        return SedeDestinazione;
    }

    public void setSedeDestinazione(String SedeDestinazione) {
        this.SedeDestinazione = SedeDestinazione;
    }

    public String getLocalitaSedeDestinazione() {
        return LocalitaSedeDestinazione;
    }

    public void setLocalitaSedeDestinazione(String LocalitaSedeDestinazione) {
        this.LocalitaSedeDestinazione = LocalitaSedeDestinazione;
    }

    public String getProvinciaSedeDestinazione() {
        return ProvinciaSedeDestinazione;
    }

    public void setProvinciaSedeDestinazione(String ProvinciaSedeDestinazione) {
        this.ProvinciaSedeDestinazione = ProvinciaSedeDestinazione;
    }

    public String getCapSedeDestinazione() {
        return CapSedeDestinazione;
    }

    public void setCapSedeDestinazione(String CapSedeDestinazione) {
        this.CapSedeDestinazione = CapSedeDestinazione;
    }

    public String getIndirizzoSedeDestinazione() {
        return IndirizzoSedeDestinazione;
    }

    public void setIndirizzoSedeDestinazione(String IndirizzoSedeDestinazione) {
        this.IndirizzoSedeDestinazione = IndirizzoSedeDestinazione;
    }

    public String getTelefonoSedeDestinazione() {
        return TelefonoSedeDestinazione;
    }

    public void setTelefonoSedeDestinazione(String TelefonoSedeDestinazione) {
        this.TelefonoSedeDestinazione = TelefonoSedeDestinazione;
    }

    public String getFaxSedeDestinazione() {
        return FaxSedeDestinazione;
    }

    public void setFaxSedeDestinazione(String FaxSedeDestinazione) {
        this.FaxSedeDestinazione = FaxSedeDestinazione;
    }

    public String getStatoSpedizione() {
        return StatoSpedizione;
    }

    public void setStatoSpedizione(String StatoSpedizione) {
        this.StatoSpedizione = StatoSpedizione;
    }

    public String getDataConsegna() {
        return DataConsegna;
    }

    public void setDataConsegna(String DataConsegna) {
        this.DataConsegna = DataConsegna;
    }

    public String getOraConsegna() {
        return OraConsegna;
    }

    public void setOraConsegna(String OraConsegna) {
        this.OraConsegna = OraConsegna;
    }

    public String getFirma() {
        return Firma;
    }

    public void setFirma(String Firma) {
        this.Firma = Firma;
    }

    public String getNumeroColli() {
        return NumeroColli;
    }

    public void setNumeroColli(String NumeroColli) {
        this.NumeroColli = NumeroColli;
    }

    public String getPeso() {
        return Peso;
    }

    public void setPeso(String Peso) {
        this.Peso = Peso;
    }

    public String getContrassegno() {
        return Contrassegno;
    }

    public void setContrassegno(String Contrassegno) {
        this.Contrassegno = Contrassegno;
    }

    public List<Trackparcel> getTracking() {
        return TRACKING;
    }

    public void setTracking(List<Trackparcel> tracking) {
        this.TRACKING = tracking;
    }

        
}

最后一个,TrackingParcel 类:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "",propOrder = {
    "Data","Ora","Luogo","Stato","Note","Codice"
})
public class Trackparcel {
    private String Data;
    private String Ora;
    private String Luogo;
    private String Stato;
    private String Note;
    private String Codice;

    public Trackparcel() {
    }

    public Trackparcel(String Data,String Ora,String Luogo,String Stato,String Note,String Codice) {
        this.Data = Data;
        this.Ora = Ora;
        this.Luogo = Luogo;
        this.Stato = Stato;
        this.Note = Note;
        this.Codice = Codice;
    }

    public String getData() {
        return Data;
    }

    public void setData(String Data) {
        this.Data = Data;
    }

    public String getOra() {
        return Ora;
    }

    public void setOra(String Ora) {
        this.Ora = Ora;
    }

    public String getLuogo() {
        return Luogo;
    }

    public void setLuogo(String Luogo) {
        this.Luogo = Luogo;
    }

    public String getStato() {
        return Stato;
    }

    public void setStato(String Stato) {
        this.Stato = Stato;
    }

    public String getNote() {
        return Note;
    }

    public void setNote(String Note) {
        this.Note = Note;
    }

    public String getCodice() {
        return Codice;
    }

    public void setCodice(String Codice) {
        this.Codice = Codice;
    }
    
    
}

在某些课程中,我删除了构造函数,只是为了便于阅读。 谢谢你的帮助。

解决方法

我找到了一些我可以使用并且适用于我的案例的东西

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "",propOrder = {
    "Data","Ora","Luogo","Stato","Note","Codice"
})
public class Trackparcel {
    
    private List<String> Note;

    private List<String> Data;

    private List<String> Luogo;

    private List<String> Stato;

    private List<String> Codice;

    private List<String> Ora;

    public Trackparcel() {
    }

    public Trackparcel(List<String> Note,List<String> Data,List<String> Luogo,List<String> Stato,List<String> Codice,List<String> Ora) {
        this.Note = Note;
        this.Data = Data;
        this.Luogo = Luogo;
        this.Stato = Stato;
        this.Codice = Codice;
        this.Ora = Ora;
    }

    public List<String> getNote() {
        return Note;
    }

    public void setNote(List<String> Note) {
        this.Note = Note;
    }

    public List<String> getData() {
        return Data;
    }

    public void setData(List<String> Data) {
        this.Data = Data;
    }

    public List<String> getLuogo() {
        return Luogo;
    }

    public void setLuogo(List<String> Luogo) {
        this.Luogo = Luogo;
    }

    public List<String> getStato() {
        return Stato;
    }

    public void setStato(List<String> Stato) {
        this.Stato = Stato;
    }

    public List<String> getCodice() {
        return Codice;
    }

    public void setCodice(List<String> Codice) {
        this.Codice = Codice;
    }

    public List<String> getOra() {
        return Ora;
    }

    public void setOra(List<String> Ora) {
        this.Ora = Ora;
    }
    
}

结果,我得到了一个包含 Note、Data、Luogo、Stato、Codice、Ora 元素的列表。 谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-