代码之家  ›  专栏  ›  技术社区  ›  John Rudy

我可以在XSD生成的类中零填充整数吗?

  •  1
  • John Rudy  · 技术社区  · 14 年前

    其中一个字段“file sequence”在模式中键入为整数。但是,客户机的客户机(集成目标)希望整数填充为零,长度为4位(例如, <file-sequence>0001</file-sequence>

    我使用序列化输出,这是很好的,自动和无痛。但是,由于该字段在XSD中被类型化为整数,因此file sequence字段显示为 <file-sequence>1</file-sequence> . 这是有道理的。:)

    到目前为止,我已经将可能的答案缩小到三个选项:

    1. 编辑架构并将类型更改为string。更新字段时,将序列号归零。缺点:每当集成目标更改模式时,我必须记住这样做(因为他们已经更改了六次)。

    2. 序列化到内存中的流,从中获取原始XML,并在那里填充整数。缺点:感觉很脏,还有很多工作要做。

    还有其他选择吗?如果不是,这里的哪个选项是正确的方法?(我认为选项1可能是最干净的。)

    2 回复  |  直到 14 年前
        1
  •  2
  •   Adam Robinson    14 年前

    老实说,选择1是唯一的现实选择。如果目标关心字符串中的字符数,则该字段不是整数;它是仅限于数字的字符串。

        2
  •  0
  •   Cameron Laird    14 年前

    在我的理解中,选项1的含义有很多不同之处,可能会让你得到你想要的东西。我的第一反应是将感兴趣的数据类型定义为 约束 整数,特别是沿着

    xsd:integer {minLength = '4' maxLength = '4'}
    

    如果这不令人满意,也许是正则表达式

    xsd:string {pattern = ...}