第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

java對象中XML鍵值對的解組

java對象中XML鍵值對的解組

慕田峪7331174 2023-10-19 21:03:48
使用 jaxb 將 XML 鍵值部分解組為 java 對象。我嘗試過使用地圖適配器,但無法做到這一點。<ACCOUNT_CHANGES>    <TYPE value="Active" />    <RECORD>        <SUBSCRIPTION>            <INFO key="aaa">                <![CDATA[042]]>            </INFO>            <INFO key="bbb">                <![CDATA[45]]>            </INFO>            <INFO key="uuid">                <![CDATA[d9a7e94c-0a9d-c745-82e9-980877cc5043]]>            </INFO>            <INFO key="ccc">                <![CDATA[Active]]>            </INFO>            <INFO key="companyname">                <![CDATA[ltd]]>            </INFO>        </SUBSCRIPTION>    </RECORD></ACCOUNT_CHANGES>  
查看完整描述

1 回答

?
ABOUTYOU

TA貢獻1812條經(jīng)驗 獲得超5個贊

您可以使用適配器來做到這一點,但據(jù)我了解您的要求,這是沒有必要的。如果您只是想解組為對象而不是 Map,則可以執(zhí)行以下操作:


從根開始:


@XmlRootElement(name = "ACCOUNT_CHANGES")

@XmlAccessorType(XmlAccessType.FIELD)

public class AccountChanges {


    @XmlElement(name = "TYPE")

    private Type type;


    @XmlElement(name = "RECORD")

    private Record record;


}

讓我們把 Type 去掉:


@XmlAccessorType(XmlAccessType.FIELD)

public class Type {


    @XmlAttribute

    private String value;

}

然后記錄一下:


@XmlAccessorType(XmlAccessType.FIELD)

public class Record {


    @XmlElement(name = "SUBSCRIPTION")

    private Subscription subscription;

}

以及訂閱:


@XmlAccessorType(XmlAccessType.FIELD)

public class Subscription {


    @XmlElement(name = "INFO")

    private List<Info> infoList;

}

信息將您的鍵作為屬性,然后是一些值。它看起來像這樣:


@XmlAccessorType(XmlAccessType.FIELD)

public class Info {


    @XmlAttribute

    private String key;


    @XmlValue

    private String value;


    public String getKey() {

        return key;

    }


    public String getValue() {

        return value;

    }

}

這將解組您的 xml,并且信息鍵和值將位于字段中。如果您想要映射中的鍵和值,可以使用適配器。


適配器看起來像這樣:


public class MyMapAdapter extends XmlAdapter<Info, Map<String, String>> {


    private HashMap<String, String> hashMap = new HashMap<String, String>();


    @Override

    public Map<String, String> unmarshal(Info v) throws Exception {

        hashMap.put(v.getKey(), v.getValue());

        return hashMap;

    }


    @Override

    public Info marshal(Map<String, String> v) throws Exception {

        // do here actions for marshalling if u also marshal

        return null;

    }

}

您將更改訂閱以使用適配器并將地圖作為字段:


@XmlAccessorType(XmlAccessType.FIELD)

public class Subscription {


    @XmlElement(name = "INFO")

    @XmlJavaTypeAdapter(MyMapAdapter.class)

    private Map<String, String> infoMap;

}

有兩種方法,都可以解組您的 xml 有效負載。


查看完整回答
反對 回復(fù) 2023-10-19
  • 1 回答
  • 0 關(guān)注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號