而在MapGuide當中,全部的設定皆可以匯出成XML檔案,或是用已經準備好的XML檔案進行匯入。講到這個應該可以了解這樣我們可以做出怎樣的變化,也就是說我們可以將會出的XML檔案進行變更,然後再將其匯回設定檔中,達到動態變更版面設定的效果。當然,這樣的變更是對於所有的使用者進行變更,若是要對單一的使用者客製化他的介面就必須再作一些變化。
所以,要達成這樣的流程,第一步就必須要匯出已有的設定檔案為XML檔,方法相當簡單,ola之前測試的時候已經將他寫成一個小小的Function,也是直接貼上套入就可以了。
直接看程式碼!
Sub OutputXmlFile(ByVal mgSessionId As String, ByVal LibraryString As String, ByVal OutputPath As String)
'1. 獲得使用者資訊
Dim userInfo As MgUserInformation = New MgUserInformation(mgSessionId)
'2. 連接站點
Dim siteConnection As MgSiteConnection = New MgSiteConnection
siteConnection.Open(userInfo)
'3. 建立資源服務
Dim resourceService As MgResourceService
resourceService = siteConnection.CreateService(MgServiceType.ResourceService)
'4. 列出資源內容
Dim DataresourceID As New MgResourceIdentifier(LibraryString)
Dim DatabyteRdr As MgByteReader
DatabyteRdr = resourceService.GetResourceContent(DataresourceID)
'5. 匯出檔案
Dim DataByteSink As New MgByteSink(DatabyteRdr)
DataByteSink.ToFile(OutputPath)
End Sub
整個程式的流程就是:連接到要匯出的服務→指定要匯出的Library→指定匯出地點。
函式必須要給三個參數,第一個參數當然就是mgSessionId,第二個則是要匯出設定檔的地點,也就是在Studio的資料夾位置(例:Library://Samples/point.LayerDefinition),最後一個就是輸出位置(伺服器的本機位置),如此就可以簡單的獲得這些設定的檔案。
或是你必須建立一個複雜的臨時層,這時候也可以利用這樣的方式,先將複雜的設定在Studio完成,再以匯出的方式取得這個XML設定檔,等到需要進行臨時層建立的時候,再以這個檔案進行修改、匯入。
沒有留言:
張貼留言