2010-10-04 56 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 = ...} 

會有所幫助。

相關問題