XML對蘭花而言,是個很陌生的語言,避之唯恐不及啊!
但是卻處處有它,可惡,遇到需求,也是得硬著頭皮上了,不然是要學PS星人擺爛嗎?不然是要學PS星人擺爛嗎?不然是要學PS星人擺爛嗎?
→→→PS星人是誰?
需求:修改資料庫中已組好的XML。
平台:ASP .NET VB、SQL Server 2005
以下程式碼僅截取與主題相關部份。
假設XML的結構是:
<element>
<node1></node1>
<node2></node2>
<node3></node3>
</element>
Client Side:
<asp:TextBox ID="TextBoxNode1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBoxNode2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBoxNode3" runat="server"></asp:TextBox>
Server Side:
' 設計一個Function,將Client畫面選取的結果,取代原XML
Private Function MakeXML(ByVal OldXMLStr As String) As String
Dim xmlDoc As New XmlDocument
Dim element As XmlNode
Dim elementList As XmlNodeList
Dim newElement As XmlNode
xmlDoc.InnerXml = OldXMLStr ' 將原XML指定給xmlDoc
element = xmlDoc.FirstChild
elementList = element.ChildNodes
' 逐一比對節點名稱,修改節點的值
For i As Integer = 0 To elementList.Count – 1
If elementList(i).Name = "node1" Then
elementList(i).InnerText = Me.TextBoxNode1.Text
End If
If elementList(i).Name = "node2" Then
elementList(i).InnerText = Me.TextBoxNode2.Text
End If
If elementList(i).Name = "node3" Then
elementList(i).InnerText = Me.TextBoxNode3.Text
End If
Next
' 新增節點
newElement = xmlDoc.CreateElement("node4")
newElement.InnerText = "node4"
element.AppendChild(newElement)
newElement = xmlDoc.CreateElement("node5")
newElement.InnerText = "node5"
element.AppendChild(newElement)
' 取代XML
xmlDoc.AppendChild(element)
Return xmlDoc.OuterXml
End Function
接下來,就可以自由發揮,設計承接新XML字串的程式,將新XML字串修改進資料庫。