2006年4月18日 星期二

XML Data Mapping

在最近的專案中,可以發現幾個方向
XML資料存取分做三個方面來討論

我們嘗試過XML對Control的Mapping,但顯然地還是比較屬於自創的作法
並沒有相當好的泛用性
參考了Java的Castor,瞭解了Mapping其實只是一種簡單的關係

問題範圍:
Mapping的XML描述,其範圍及方式
使用者開發流程
====================================================================
將XML至Control的資料路徑詳列,大概是像這樣
所以說,剩下的問題就是處理其中的對應
Object對Control的Mapping在.Net裡已經有很完整的方案

這個方案是用寫程式的方式
而Mapping比較需要以XML的描述完成
描述          XML Description  實做        Binding   Reflection  路徑    Control <-> Object <-> XML

====================================================================
XO Mapping問題
0. 觀念
Mapping指的是兩個Key之間的Value有著相等的關係
例如

表示SomeKey1的Value通過路徑(轉換)後應該是SomeKey2的Value

1. 一般結構對應

Object是一種循序結構
XML是一種樹狀結構(當然也是循序),但可以使用xpath轉換成循序結構
如此便能形成循序結構互相對應

例如:
b/@c">

相對關係:
這兩個值的尋找方式都是相對的
Field的上層是Class(in assembly)
Element的上層是Element
如果沒有定義上層,就尋找這一層

相對模式:

物件間對應模式
表示物件之間要進行Binding,這裡會使用BindingSource完成

XML對Object進行Reflection的讀取與寫入

2. 一般型態對應
無論SOAP,XS(xml-schema),CLR Type都應該有個對應表可以互相轉換型態
例如:


3. 複雜型態對應
複雜型態對應是為了讓Mapping裡能夠還有Mapping
例如:

b/@c">
相對模式:

這裡表示支援複雜資料集的Class與任何作為資料來源的Class
支援的有ListView,ListBox,DataGrid,ComboBox



4. 複雜結構對應

沒有留言 :

張貼留言