Function Create()Function Create(ByVal strCode AsString, ByVal strName AsString, ByVal strCity AsString) AsBoolean Try Dim xmlDoc As XmlDocument =New XmlDocument xmlDoc.Load("myTest.xml") Dim NodeList As XmlNodeList = xmlDoc.SelectSingleNode("//Root").ChildNodes '下面是查Code是否唯一 '后有自动增加Code的值的代码. ForEach xn As XmlNode In NodeList Dim myxe As XmlElement = xn '转换类型 If myxe.GetAttribute("Code") = Filtrate(strCode) Then ReturnFalse Exit Function EndIf Next Dim root As XmlNode = xmlDoc.SelectSingleNode("Root") '查找<Root> Dim xe As XmlElement = xmlDoc.CreateElement("Profile") '创建一个<Profile>节点 xe.SetAttribute("Code", Filtrate(strCode)) '设置该节点Code属性 xe.SetAttribute("Name", Filtrate(strName)) '设置该节点的Name属性 xe.SetAttribute("City", Filtrate(strCity)) '设置该节点的City属性 '以下是在<Profile>下建子节点<"myTest"> 'XmlElement xesub1=xmlDoc.CreateElement("myTest"); 'xesub1.InnerText="myText"; '设置文本节点 'xe1.AppendChild(xesub1); '添加到<Root>节点中 root.AppendChild(xe) '添加到<Root>节点中 xmlDoc.Save("myTest.xml") ReturnTrue Catch ex As Exception ReturnFalse EndTry End Function
Function Retrieve()Function Retrieve() As DataSet Try Dim doc As XmlDocument =New XmlDocument doc.Load("myTest.xml") Dim node As XmlNode = doc.SelectSingleNode("//Root") Dim read As StringReader =New StringReader(node.OuterXml) Dim myds As DataSet =New DataSet myds.ReadXml(read) Return myds IfNot myds IsNothingThen myds.Dispose() Catch ex As Exception ' MsgBox(ex.Message) EndTry End Function
三、搜索数据,读某一条数据也可以用这直接读。
Function Search()Function Search(ByVal strKeyWord AsString, ByVal strKeyText AsString) As DataSet Try Dim doc As XmlDocument =New XmlDocument doc.Load("myTest.xml") Dim NodeList As XmlNodeList = doc.SelectSingleNode("//Root").ChildNodes Dim i AsInteger Dim strXml AsString="<myx_Search>"'把搜索到的放在这里 ForEach xn As XmlNode In NodeList If strKeyText =""Or strKeyText ="全部"Then'搜索所有的属性值 For i =0To xn.Attributes.Count -1 Dim xe As XmlElement = xn '转换类型 If xe.GetAttribute(xn.Attributes(i).Name) = strKeyWord Then strXml = strXml & xn.OuterXml EndIf Next Else Dim xe As XmlElement = xn '转换类型 If xe.GetAttribute(strKeyText) = strKeyWord Then'搜索指定的属性值 strXml = strXml & xn.OuterXml EndIf EndIf Next strXml = strXml &"</myx_Search>" 'MsgBox(strXml) Dim read As StringReader =New StringReader(strXml) Dim myds As DataSet =New DataSet myds.ReadXml(read) Return myds IfNot myds IsNothingThen myds.Dispose() Catch ex As Exception MsgBox(ex.Message) EndTry End Function
四、修改
PublicFunction Update()Function Update(ByVal strCode AsString, ByVal strName AsString, ByVal strCity AsString) AsBoolean Try Dim xmlDoc AsNew XmlDocument xmlDoc.Load("myTest.xml") Dim xnl As XmlNodeList = xmlDoc.SelectSingleNode("//Root").ChildNodes ForEach xn As XmlNode In xnl Dim xe As XmlElement = xn '转换类型 If xe.GetAttribute("Code") = strCode Then 'xe.SetAttribute("Code", strCode) 'xe.InnerText="" xe.SetAttribute("Name", strName) xe.SetAttribute("City", strCity) EndIf Next xmlDoc.Save("myTest.xml") ReturnTrue Catch ex As Exception ReturnFalse EndTry End Function
五、删除
Function Delete()Function Delete(ByVal strCode AsString) AsBoolean Try Dim xmlDoc AsNew XmlDocument xmlDoc.Load("myTest.xml") Dim sxn As XmlNode = xmlDoc.DocumentElement.S _ electSingleNode("//Root/Profile[@Code="& strCode &"]") xmlDoc.SelectSingleNode("//Root").RemoveChild(sxn) 'Dim xn As XmlNode = xmlDoc.SelectSingleNode("//ProFile/Vendor[@Code=" & strCode & "]") ''For Each xn As XmlNode In xnl '' Dim xe As XmlElement = xn '' If xe.GetAttribute("Code") = strCode Then '' ' xe.RemoveAll() '删除该节点的全部内容 '' ' xe.RemoveAttribute("Name") 删除Name属性 '' End If ''Next xmlDoc.Save("myTest.xml") ReturnTrue Catch ex As Exception MsgBox(ex.Message) ReturnFalse EndTry End Function