簡體   English   中英

如何在XML中為XStream使用常量

[英]How to use constants in XML for XStream

請問,如何在XML中定義類似Integer.MAX_VALUE的java常量? 我知道如何使用枚舉,但我有第三方庫,必須使用常量操作。 例如在xml文件中存在一些值,我想在生成的java類中應該聲明為常量。

XML:

 <person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
 </person>

Java的:

 public class Person {
 private String firstname;
 private String lastname;
 private PhoneNumber phone;
 private PhoneNumber fax;
 // ... constructors and methods
}

public class PhoneNumber {
private int code;
private String number;
// ... constructors and methods
 }     

這有效。 但應該是這樣的:

XML:

 <person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    **<const>**PnoneNumber.LOCAL**</const>**
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
 </person>

Java應該是:

 public class Person {
 private String firstname;
 private String lastname;
 private PhoneNumber phone;
 private PhoneNumber fax;
 // ... constructors and methods
}

public class PhoneNumber {
public static final PnoneNumber LOCAL=new PhoneNumber(123,"1234-456");
private int code;
private String number;
// ... constructors and methods
 }

我可以輕松地完成這項工作並且沒有自定義轉換器嗎?

非常感謝。

我已經研究了幾個XML-POJO生成器,特別是那些使用XML Schema(XSD)來定義類的生成器,令我驚訝的是,沒有提供修改屬性的能力。

如果您想保留當前的解決方案,我認為最簡潔的方法是通過您自己的自定義轉換器來擴展轉換,就像您自己說的那樣。

如果您使用的是使用XML Schema的東西,您可以始終使用屬性fixed="constant"作為標准初始化,但當然它不會保留語義。

但是,以另一種方式解決這個問題可能會更好。 這些是常量,它們不應該改變,所以也許最好將它們定義在一個單獨的文件中。

暫無
暫無

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

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