2010-10-04 55 views
1

情况如下:我有一位客户向我发布XML模式,我的软件将他们的记录从制表符分隔转换为XML。我可以在XSD生成的类中填零整数吗?

其中一个字段“文件序列”在模式中键入为整数。但是,客户端(集成目标)需要实际输出XML中的零填充整数和4位数字长整数(EG,<file-sequence>0001</file-sequence>)。

我输出使用序列化,这是很好,自动和无痛。但是,由于该字段在XSD中以整数形式输入,因此文件序列字段为<file-sequence>1</file-sequence>。这是有道理的。 :)

到目前为止,我已经收窄可能的答案到三个选项:

  1. 编辑模式和类型更改为字符串。在更新字段时将填充序号填零。下行:我必须记得在集成目标改变模式的任何时候这样做(因为他们已经有大约6次了)。

  2. Forego使用XML序列化,在代码中手动生成XML。下行:很多工作,可能容易出错,严重的代码异味(对我来说)。

  3. 序列化为内存流,获取原始XML,填充整数。缺点:感觉真的很脏,仍然很多工作。

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

回答

2

老实说,选项1是唯一的选择。如果目标关心字符串中的字符数,那么该字段不是整数;这是一个仅限于数字的字符串。

+0

这就是我最终做的。另一方面,由于我使用XSD生成类,如果我在下次更改模式时忘记了关键的编辑步骤,我至少会收到构建错误。 – 2010-10-05 01:50:51

0

在我了解你的意思上,选项1可能会带来你以前的想法。我的第一反应是定义感兴趣的数据类型是一个约束整数,具体而言,一个沿着

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

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

xsd:string {pattern = ...} 

会有所帮助。

相关问题