簡體   English   中英

如何使用XStream為相同的類元素設置不同的別名

[英]How to set different alias for same class elements using XStream

如何使用XStream為相同類元素的XML元素設置不同的別名?

我有以下類,並且想重用Phone類來表示將生成以下格式XML的家庭電話和工作電話

<customer>
  <id>222</id>
  <name>TestCustomer</name>
  <workPhone>
    <workPhoneNumber>12345678</workPhoneNumber>
    <workPhoneExtn>2345</workPhoneExtn>
  </workPhone>
  <workPhone>
    <workPhoneNumber>23456789</workPhoneNumber>
    <workPhoneExtn>2555</workPhoneExtn>
  </workPhone>
  <homePhone>
    <homePhoneNumber>222222222</homePhoneNumber>
    <homePhoneExtn>1234</homePhoneExtn>
  </homePhone>
</customer>

使用以下代碼,我只能在家庭電話和工作電話對象的類級別之前設置不同的別名。

@XStreamAlias("customer")
public class Customer {

    private String id;
    private String name;    

    @XStreamImplicit(itemFieldName = "workPhone")
    private ArrayList<Phone> workPhones;

    @XStreamImplicit(itemFieldName = "homePhone")
    private ArrayList<Phone> homePhones;
}

public class Phone {
    private String number;
    private String extn;
}

使用上面的類定義,我只能得到以下XML結構:

<customer>
  <id>222</id>
  <name>TestCustomer</name>
  <workPhone>
    <number>12345678</number>
    <extn>2345</extn>
  </workPhone>
  <workPhone>
    <number>12345678</number>
    <extn>2355</extn>
  </workPhone>
  <homePhone>
    <number>222222222</number>
    <extn>1234</extn>
  </homePhone>
</customer>

我對Mappers或轉換器是否可以幫助實現這一目標尚不明確。

有人可以建議是否根據其類別的別名將電話的號碼和分機設置為別名“ workphoneNumber”,“ workphoneExtn” /“ homePhoneNumber”,“ homePhoneExtn”嗎? 它在編組和拆組期間均應工作。 請提出建議。

嘗試這個:

xstream.alias("workPhone", Person.class);
xstream.alias("homePhone", Person.class);

xstream.aliasField("workPhoneNumber", Person.class, "number");
xstraem.aliasField("homePhoneNumber", Person.class, "number");

...

暫無
暫無

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

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