Public Function WriteConfigInfo(ByVal aSection As String, ByVal aKey As String, _
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、雅安服務器托管、營銷軟件、網(wǎng)站建設、額濟納網(wǎng)站維護、網(wǎng)站推廣。
ByVal aValue As String, ByVal aFileName As String) As Boolean
If aSection = "" Then Return False
If aFileName = "" Then Return (False)
' create in instance of the class and write the config file info
Dim XmlFile As New clsXMLCfgFile(aFileName)
Return XmlFile.WriteConfigInfo(aSection, aKey, aValue)
End Function
Public Class clsXMLCfgFile
Dim Doc As New XmlDocument()
Dim FileName As String
Dim doesExist As Boolean
Public Sub New(ByVal aFileName As String)
FileName = aFileName
Try
Doc.Load(aFileName)
doesExist = True
Catch ex As Exception
If Err.Number = 53 Then
Doc.LoadXml(("configuration" "/configuration"))
Doc.Save(aFileName)
End If
End Try
End Sub
Public Function GetConfigInfo(ByVal aSection As String, ByVal aKey As String, ByVal aDefaultValue As String) As Collection
' return immediately if the file didn't exist
If doesExist = False Then
Return New Collection()
End If
If aSection = "" Then
' if aSection = "" then get all section names
Return getchildren("")
ElseIf aKey = "" Then
' if aKey = "" then get all keynames for the section
Return getchildren(aSection)
Else
Dim col As New Collection()
col.Add(getKeyValue(aSection, aKey, aDefaultValue))
Return col
End If
End Function
Public Function WriteConfigInfo(ByVal aSection As String, ByVal aKey As String, ByVal aValue As String) As Boolean
Dim node1 As XmlNode
Dim node2 As XmlNode
If aKey = "" Then
' find the section, remove all its keys and remove the section
node1 = (Doc.DocumentElement).SelectSingleNode("/configuration/" aSection)
' if no such section, return True
If node1 Is Nothing Then Return True
' remove all its children
node1.RemoveAll()
' select its parent ("configuration")
node2 = (Doc.DocumentElement).SelectSingleNode("configuration")
' remove the section
node2.RemoveChild(node1)
ElseIf aValue = "" Then
' find the section of this key
node1 = (Doc.DocumentElement).SelectSingleNode("/configuration/" aSection)
' return if the section doesn't exist
If node1 Is Nothing Then Return True
' find the key
node2 = (Doc.DocumentElement).SelectSingleNode("/configuration/" aSection "/" aKey)
' return true if the key doesn't exist
If node2 Is Nothing Then Return True
' remove the key
If node1.RemoveChild(node2) Is Nothing Then Return False
Else
' Both the Key and the Value are filled
' Find the key
node1 = (Doc.DocumentElement).SelectSingleNode("/configuration/" aSection "/" aKey)
If node1 Is Nothing Then
' The key doesn't exist: find the section
node2 = (Doc.DocumentElement).SelectSingleNode("/configuration/" aSection)
If node2 Is Nothing Then
' Create the section first
Dim e As Xml.XmlElement = Doc.CreateElement(aSection)
' Add the new node at the end of the children of ("configuration")
node2 = Doc.DocumentElement.AppendChild(e)
' return false if failure
If node2 Is Nothing Then Return False
' now create key and value
e = Doc.CreateElement(aKey)
e.InnerText = aValue
' Return False if failure
If (node2.AppendChild(e)) Is Nothing Then Return False
Else
' Create the key and put the value
Dim e As Xml.XmlElement = Doc.CreateElement(aKey)
e.InnerText = aValue
node2.AppendChild(e)
End If
Else
' Key exists: set its Value
node1.InnerText = aValue
End If
End If
' Save the document
Doc.Save(FileName)
Return True
End Function
Private Function getKeyValue(ByVal aSection As String, ByVal aKey As String, ByVal aDefaultValue As String) As String
Dim node As XmlNode
node = (Doc.DocumentElement).SelectSingleNode("/configuration/" aSection "/" aKey)
If node Is Nothing Then Return aDefaultValue
Return node.InnerText
End Function
Private Function getchildren(ByVal aNodeName As String) As Collection
Dim col As New Collection()
Dim node As XmlNode
Try
' Select the root if the Node is empty
If aNodeName = "" Then
node = Doc.DocumentElement
Else
' Select the node given
node = Doc.DocumentElement.SelectSingleNode(aNodeName)
End If
Catch
End Try
' exit with an empty collection if nothing here
If node Is Nothing Then Return col
' exit with an empty colection if the node has no children
If node.HasChildNodes = False Then Return col
' get the nodelist of all children
Dim nodeList As XmlNodeList = node.ChildNodes
Dim i As Integer
' transform the Nodelist into an ordinary collection
For i = 0 To nodeList.Count - 1
col.Add(nodeList.Item(i).Name)
Next
Return col
End Function
End Class
Top
把它放模塊中,稍微調(diào)試一下:)就OK了
Public?Class?Form1
Dim?node(5)?As?TreeNode
Private?Sub?Form1_Load(sender?As?System.Object,?e?As?System.EventArgs)?Handles?MyBase.Load
? Dim?root?As?TreeNode
? With?TreeView1
? ? ? .Nodes.Clear()
? ? ? .ShowLines?=?True
? ? ? .ShowPlusMinus?=?True
? ? ? .ShowRootLines?=?True
? ? ? root?=?.Nodes.Add("倉庫")?'增加根節(jié)點
? ? ? .SelectedNode?=?root? '在此根節(jié)點下添加子節(jié)點
? ? ? For?i?=?1?To?6
? ? ? ? ? node(i?-?1)?=?.SelectedNode.Nodes.Add(i.ToString??"號倉庫")
? ? ? Next
? ? ? .ExpandAll()
? End?With
End?Sub
Private?Sub?Button1_Click(sender?As?System.Object,?e?As?System.EventArgs)?Handles?Button1.Click
? If?Val(TextBox1.Text)?=?100?And?Val(TextBox1.Text)?=?699?Then
? ? ? node(Val(TextBox1.Text)?\?100?-?1).Nodes.Add(TextBox1.Text)
? End?If
End?Sub
Private?Sub?Button2_Click(sender?As?System.Object,?e?As?System.EventArgs)?Handles?Button2.Click
? If?Val(TextBox2.Text)?=?1000000?And?Val(TextBox2.Text)?=?6999999?Then
? ? ? For?Each?child?As?TreeNode?In?node(Val(TextBox2.Text)?\?1000000?-?1).Nodes
? ? ? ? ? If?child.Text?=?TextBox2.Text.Substring(1,?3)?Then
? ? ? ? ? ? ? child.Nodes.Add(TextBox2.Text)
? ? ? ? ? ? ? Exit?For
? ? ? ? ? End?If
? ? ? Next
? End?If
End?Sub
End?Class
1.一般來說,要實現(xiàn)前后端分離,前端就需要開啟一個本地的服務器來運行自己的前端代碼,以此來模擬真實的線上環(huán)境,并且,也是為了更好的開發(fā)。因為你在實際開發(fā)中,你不可能要求每一個前端都去搭建一個java(php)環(huán)境,并且在java環(huán)境下開發(fā),這對于前端來說,學習成本太高了。
?2.但如果本地沒有開啟服務器的話,不僅無法模擬線上的環(huán)境,而且還面臨到了跨域的問題,因為你如果寫靜態(tài)的html頁面,直接在文件目錄下打開的話,你是無法發(fā)出ajax請求的(瀏覽器跨域的限制),因此,你需要在本地運行一個服務器,可是又不想搭建陌生而龐大的java環(huán)境,怎么辦法呢?nodejs正好解決了這個問題。在我們項目中,我們利用nodejs的express框架來開啟一個本地的服務器,然后利用nodejs的一個http-proxy-middleware插件將客戶端發(fā)往nodejs的請求轉(zhuǎn)發(fā)給真正的服務器,讓nodejs作為一個中間層。這樣,前端就可以無憂無慮的開發(fā)了
?3.由于前后端分離后,前端和后臺同時開發(fā)時,就可能遇到前端已經(jīng)開發(fā)好一個頁面了,可是卻等待后臺API接口的情況。比如說A是負責前端,B是負責后臺,A可能用了一周做好了基本的結(jié)構(gòu),并且需要API接口聯(lián)調(diào)后,才能繼續(xù)開發(fā),
?4.而此時B卻還沒有實現(xiàn)好所需要的接口,這種情況,怎么辦呢?在我們這個項目里,我們是通過了mock來提供一些假數(shù)據(jù),我們先規(guī)定好了API接口,設計出了一套API文檔,然后我們就可以通過API文檔,利用mock來返回一些假數(shù)據(jù),這樣就可以模擬發(fā)送API到接受響應的整一個過程,
?5.因此前端也不需要依賴于后端開發(fā)了,可以獨立開發(fā),等到后臺的API全部設計完之后,就可以比較快速的聯(lián)調(diào)。