真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

VB.NET中fnSimpleObjectToXML怎么用

這篇文章主要為大家展示了“VB.NET中fnSimpleObjectToXML怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“VB.NET中fnSimpleObjectToXML怎么用”這篇文章吧。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺(tái)小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了文山州免費(fèi)建站歡迎大家使用!

1、我將這個(gè)半自動(dòng)初始化文件類命名為clsAPPOption,類內(nèi)結(jié)構(gòu)及包含過程的功能說明如下:

兩個(gè)區(qū)域#Region "應(yīng)用程序使用的選項(xiàng)結(jié)構(gòu)定義"、#Region "應(yīng)用程序選項(xiàng)的變量聲明"中的內(nèi)容是按初始化選項(xiàng)級(jí)組織的類及類的實(shí)例,每一個(gè)類表示程序選項(xiàng)的一個(gè)初始化節(jié),必須由最終使用者根據(jù)實(shí)際選項(xiàng)需要自行手工補(bǔ)充。
◆fnGetAppDirectory:取得應(yīng)用程序的運(yùn)行目錄
◆sbInitialDefaultAPPOption:設(shè)置程序選項(xiàng)的默認(rèn)初始值(這個(gè)過程中的代碼需根據(jù)實(shí)際需要手工修改)。
◆fnSaveAppOption:將類內(nèi)的程序選項(xiàng)保存到一個(gè)指定的文件中. (這個(gè)過程中的部分代碼需根據(jù)實(shí)際需要手工修改)
◆fnLoadAppOption:在指定的文件中讀取應(yīng)用程序的選項(xiàng)信息并保存到當(dāng)前類中(這個(gè)過程中的部分代碼需根據(jù)實(shí)際需要手工修改)。
◆fnXMLElementToSimpleObject:將一個(gè)XMLElement轉(zhuǎn)為它代表的簡(jiǎn)單對(duì)象,所謂簡(jiǎn)單對(duì)象就是諸如int32\int16之類的基本net對(duì)象。
◆fnXMLElementToClassObject:將一個(gè)XMLElement轉(zhuǎn)換為它代表的類對(duì)象。
◆fnXMLElementToArray:將一個(gè)XMLElement轉(zhuǎn)為它代表的數(shù)組。
◆fnArrayToXML:將一個(gè)數(shù)組放入XML文件中,目前只支持一維數(shù)組:例如dim aString(10) as string
◆fnClassObjectToXML:將一個(gè)類對(duì)象轉(zhuǎn)換為xml元素的表示形式。
◆VB.NET fnSimpleObjectToXML:將一個(gè)簡(jiǎn)單對(duì)象改為XML元素表示
◆注:其中fnXMLElementToXXXX和fnXXXXToXML功能相對(duì)應(yīng),互為反函數(shù)。

2、程序的實(shí)現(xiàn)是非常簡(jiǎn)單的,fnClassObjectToXML對(duì)指定的類進(jìn)行反射操作,使用類的類型的GetFields方法枚舉類內(nèi)的成員變量信息,然后根據(jù)成員變量的類型調(diào)用VB.NET fnSimpleObjectToXML或fnArrayToXML,在函數(shù)結(jié)束的時(shí)候,將要轉(zhuǎn)換的類以一個(gè) XMLElement對(duì)象的形式返回。

  1. For Each tobjFieldInfo In tobjClassObjectType.GetFields  

  2. If tobjFieldInfo.FieldType.IsArray = False Then '只是一個(gè)簡(jiǎn)單類型,直接取得值  

  3. tobjXMLElement = fnSimpleObjectToXML(tobjFieldInfo.GetValue(ni_objClassObject), _  

  4. ni_objXMLDocument, _  

  5. tobjFieldInfo.Name)  

  6. tobjXMLClassObjectElement.AppendChild(tobjXMLElement)  

  7. Else  

  8. REM 如果是一個(gè)數(shù)組類型,則進(jìn)行數(shù)組方法的調(diào)用以取得值,  

  9. '目前只支持一維數(shù)組元素  

  10. tobjXMLElement = fnArrayToXML(tobjFieldInfo.GetValue(ni_objClassObject), 
    ni_objXMLDocument, tobjFieldInfo.Name, tobjFieldInfo.FieldType.FullName)  

  11. '將數(shù)組對(duì)象放入結(jié)構(gòu)的xml對(duì)象中  

  12. tobjXMLClassObjectElement.AppendChild(tobjXMLElement)  

  13. End If 

VB.NET fnSimpleObjectToXML的實(shí)現(xiàn)也很簡(jiǎn)單,根據(jù)前文確立的簡(jiǎn)單對(duì)象的定義,VB.NET fnSimpleObjectToXML過程所要生成的xml對(duì)象的幾個(gè)要素可以這樣獲?。篛bjectName在f nClassObjectToXML作反射后已經(jīng)獲取,并以參數(shù)傳遞的方式在調(diào)用VB.NET fnSimpleObjectToXML時(shí)提供了。 ObjectType數(shù)據(jù)類型則可以利用ni_objSimpleObject.GetType.FullName方法取得, ni_objSimpleObject就是在函數(shù)調(diào)用時(shí)傳入的簡(jiǎn)單對(duì)象的值。

在編寫fnArrayToXML過程時(shí)出現(xiàn)了一點(diǎn)小問題,由于調(diào)用方不可能要求數(shù)組的元素逐個(gè)傳入,所以對(duì)數(shù)組的元素個(gè)數(shù)以及元素的值無法在函數(shù)中以對(duì)象反射的方式直接獲取。幸運(yùn)的是,在Net反射操作中,可以利用Invoke方法來調(diào)用原始對(duì)象內(nèi)的函數(shù)或?qū)傩赃^程,而數(shù)組的共享方法GetLength、GetValue功能適好是取數(shù)組元素個(gè)數(shù)及指定下標(biāo)的元素值,所以問題立刻迎刃而解。

'利用反射調(diào)用數(shù)組的getLenght方法取得數(shù)組的大小,這里僅支持一維數(shù)組,但對(duì)于初始化文件已足夠用了  tobjXMLAttribute = ni_objXMLDocument.CreateAttribute("ArrayLength")  tobjMethodInfo = tobjArrayType.GetMethod("GetLength")  ReDim taobjParameter(0)  taobjParameter(0) = 0  ti32Tempa = tobjMethodInfo.Invoke(ni_objArray, taobjParameter)  tobjXMLAttribute.Value = ti32Tempa tobjXMLElement.SetAttributeNode(tobjXMLAttribute)  tobjXMLAttribute = Nothing  '加入數(shù)組的內(nèi)的元素  For ti32LoopA = 0 To ti32Tempa - 1   '利用反射取得數(shù)組的GetValue方法取得實(shí)際元素的值  ReDim taobjParameterType(0)  taobjParameterType(0) = GetType(Integer)  tobjMethodInfo = tobjArrayType.GetMethod("GetValue", taobjParameterType)  ReDim taobjParameter(0)  taobjParameter(0) = ti32LoopA  tobjTempa = tobjMethodInfo.Invoke(ni_objArray, taobjParameter)  ' 將數(shù)組元素放入對(duì)xml對(duì)象中  tobjXMLElementA = fnSimpleObjectToXML(tobjTempa, ni_objXMLDocument, ti32LoopA)  tobjXMLElement.AppendChild(tobjXMLElementA)  Next ti32LoopA

從XML轉(zhuǎn)為net對(duì)象的過程基本都沒有什么技術(shù)難度。我只是根據(jù)xml中包含的ObjectType信息簡(jiǎn)單獲得簡(jiǎn)單對(duì)象的類型,然后直接調(diào)用net強(qiáng)制轉(zhuǎn)換類的功能將XML文件中指定的對(duì)象儲(chǔ)存的數(shù)值重新恢復(fù)為原來的net對(duì)象。代碼如下:

'根據(jù)XMLelement結(jié)構(gòu)元素中指定的對(duì)象類型,建立對(duì)象  tobjType = Type.GetType(tobjXmlSimpleObjectElement.GetAttribute("ObjectType"))  tobjReturnSimpleObject = Convert.ChangeType(tobjXmlSimpleObjectElement.InnerText, tobjType, Nothing)

以上是“VB.NET中fnSimpleObjectToXML怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)標(biāo)題:VB.NET中fnSimpleObjectToXML怎么用
網(wǎng)頁(yè)URL:http://weahome.cn/article/johode.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部