0
請考慮以下情形。我們有一個定義技術文檔交換格式的XSD文件(一個根類型由幾個complexTypes
組成)。
此外,還有一個規範定義了每個字段的值範圍和格式。XmlSerializer:XSD生成的類序列化問題
顯然,兩個文檔都是由不同的部門創建的,因爲格式的定義是不同的。例如。
- XSD:時間是由XML類型表示時間(
XmlSerializer
格式:HH:MM:SS.FFF) - 規格文檔:以下格式必須用於時間HH:mm。
技術上講,事情很簡單。我們使用XSD.exe來生成類。但是現在輸出文件在使用XmlSerializer
後看起來不同。沒有機會就格式進行談判,因爲它是由於影響整個市場的規則而產生的,因此也影響了很多交易對手。
正如我們必須假設的那樣,規範文檔的格式需要得到尊重。所以我一直在尋找可以確保這一點的選項。
- 添加和實現
IXmlSerializable
接口受影響complexTypes
的生成的類。
不幸的是,這不是一個選項,因爲XmlSerializer
的初始化引發了一個異常:「有反映類型的錯誤。」
或者有什麼辦法可以避免這種情況?實現根類型的接口不是一種選擇,因爲它非常大且複雜。 - 找到一個序列化庫,其中可以提供某種類型的格式映射,以便可以實現字段中的自定義格式。
現在,我沒有找到像這樣的東西。但也許有人可以給我提示。 - 序列化後通過
XPathNavigator
修改節點的字符串內容。
不是最好的方法,但它會完成這項工作。 - 在生成輸出中直接修改生成的類並添加一些代理屬性。
實際上不是最好的想法,因爲重新生成(由於新版本的XSD文件)會覆蓋所有修改。不幸的是,屬性不能在partial class
中重新定義,對吧?
我已經按照首選項的順序排列了列表。
所以我錯過了一個選項?你會走哪條路?
我知道這不是典型的如何使用class xyz問題,但我仍然希望,你可以給我提示,通常如何處理這樣的場景。