加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在XML中为XStream使用常量

发布时间:2020-12-16 22:44:22 所属栏目:百科 来源:网络整理
导读:请问,如何在 XML中定义类似Integer.MAX_VALUE的java常量?我知道如何使用枚举,但我有第三方库,必须使用常量操作. 例如.在xml文件中存在一些值,我想在生成的java类中应该声明为常量. XML: person firstnameJoe/firstname lastnameWalnes/lastname phone code
请问,如何在 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”作为标准初始化,但当然它不会保留语义.

但是,以另一种方式解决这个问题可能会更好.这些是常量,它们不应该改变,所以也许最好将它们定义在一个单独的文件中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读