亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 JAXB 解析嵌套 XML 時出現的問題

使用 JAXB 解析嵌套 XML 時出現的問題

臨摹微笑 2022-08-03 15:50:46
我無法使用 jaxB 解析以下 xml 文件<?xml version="1.0" encoding="utf-8"?><Root>    <Status>1</Status>    <StatusMessage/>    <ResultSet>        <Columns count="2">            <col type="Decimal">COL1</col>            <col type="String">COL2</col>        </Columns>        <Rows count="3">            <row index="0">                <col index="0">1</col>                <col index="1">ABC</col>            </row>            <row index="1">                <col index="0">2</col>                <col index="1">DEF</col>            </row>            <row index="2">                <col index="0">3</col>                <col index="1">XYZ</col>            </row>        </Rows>    </ResultSet></Root>以下是我如何編寫java對象    @XmlRootElement(name = "Root")    @XmlAccessorType(XmlAccessType.FIELD)    public class Root{          @XmlElement(name="Status")           private String status;          @XmlElement(name="StatusMessage")           private String statusMessage;          @XmlElement(name="ResultSet")          private ResultSet resultSet;    }@XmlAccessorType(XmlAccessType.FIELD)@XmlRootElement(name="ResultSet")public class ResultSet {    @XmlElement(name = "Columns")    MyColumns cols;    @XmlElementWrapper(name="Rows")    @XmlElement(name = "row")    List<MyRow> all;}@XmlRootElement(name = "Columns")public class MyColumns {    @XmlElement(name = "col")    private String columns1;    @XmlElement(name = "col")    private String columns2;}@XmlRootElement(name = "row")@XmlAccessorType(XmlAccessType.FIELD)public class MyRows {    @XmlElement(name = "col")    private String row1;    @XmlElement(name = "col")    private String row2;}我在解析時沒有得到任何異常,但MyRows和MyColumns中的數據為空。我懷疑的是MyRows中的XMLElement名稱。對于這兩個變量,名稱都是“col”。因此,它可能無法正確映射數據。解析此 xml 文件的正確方法是什么?
查看完整描述

1 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

您的 POJO 應該更匹配您的行和列。我們創建了一個 Column 類(我選擇了一個同時在 MyRow 和 MyColumns 中使用的類 - 兩者都有屬性)。


@XmlAccessorType(XmlAccessType.FIELD)

public class Column {


    @XmlAttribute

    private String type;

    @XmlAttribute

    private String index;

    @XmlValue

    private String value;

}

更改 MyColumns 以使用它:


@XmlRootElement(name = "Columns")

public class MyColumns {


    @XmlElement(name = "col")

    private List<Column> columns;


}

MyRow也是如此:


@XmlRootElement(name = "row")

@XmlAccessorType(XmlAccessType.FIELD)

public class MyRow {


    @XmlAttribute

    private String index;


    @XmlElement(name = "col")

    private List<Column> columns;

}


查看完整回答
反對 回復 2022-08-03
  • 1 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號