vb.net中xml操作实例

来源:互联网 发布:淘宝 茅膏菜 编辑:程序博客网 时间:2024/04/27 21:25

记录一下开发过程中进行的一次XML操作实例,实现如下效果:

  1. 把winform中的一个DataGridView控件绑定的dataset对象转换成xml格式的字符串
  2. 该winform中还包含了多个textbox以及picturebox控件,相应的数据和上面的dataset数据一并封装到一个xml文件里
具体涉及到的技术都在源代码中注释:

    ''' <summary>    ''' 导出当前票据数据为xml格式    ''' </summary>    ''' <param name="sender"></param>    ''' <param name="e"></param>    ''' <remarks></remarks>    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click        Dim strXML As String        strXML = Me.PiaojuDataSet2.GetXml() '将dataset对象转换成string类型XML格式,等待合并到最终的XML文件中        Dim writer As New Xml.XmlTextWriter("d:\test2.xml", System.Text.Encoding.GetEncoding("utf-8"))  '定义要输出的xml文件编码及保存路径        writer.Formatting = Xml.Formatting.Indented '设置XML使用自动缩进便于阅读        writer.WriteRaw("<?xml version=""1.0"" encoding=""utf-8"" ?>")  '书写根标签()        writer.WriteStartElement("FullData")    '添加次级标签        writer.WriteStartElement("DataSet")        '添加次次级标签()        writer.WriteRaw(strXML)        '将刚才转换的dataset字符串XML数据保存到<Dataset>标签中        writer.WriteEndElement()        '关闭<Dataset>标签        writer.WriteStartElement("otherData")   '添加保存其他数据的次次级标签(与<DataSet>标签同级)        writer.WriteElementString("applySign", pic.Pic2String(Me.applySignBox.Image))   '添加该级别标签内的子元素字符串,用来存放picturebox中的图片信息,Pic2String函数参看上一篇博文        writer.WriteEndElement()        '关闭<otherData>标签        writer.WriteFullEndElement()    '关闭全部标签        writer.Close()  '将XML写入文件并关闭writer    End Sub

    ''' <summary>    ''' 从XML文件中载入数据到当前winform    ''' </summary>    ''' <param name="sender"></param>    ''' <param name="e"></param>    ''' <remarks></remarks>    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click        Dim doc As New Xml.XmlDocument        doc.Load("d:\test2.xml")    '从指定路径加载XML文件        Dim strDS As String = doc.SelectSingleNode("/FullData/DataSet").InnerXml    '获取DataSet标签内的数据用来向dataset对象加载数据        Dim sr As IO.StringReader = New IO.StringReader(strDS)  '由刚才获取到的标签内容字符串创建reader对象        Me.PiaojuDataSet2.ReadXml(sr)       '向dataset对象中加载xml格式数据,这里比较郁闷的是readxml()方法只能从指定的磁盘文件或者reader类型加载,不能直接从string对象加载,所以有了上一行由string创建的reader这一步        Dim strPic As String = doc.SelectSingleNode("/FullData/otherData/applySign").InnerXml   '获取applySign标签内存放的图片信息(string格式)        Me.applySignBox.Image = pic.getPicFromString(strPic)    'string格式图片转换成image并放到picturebox控件里面显示出来,getPicFromString()函数参看前面的博文    End Sub

算了,还得翻之前的博文,方便查看,还是把image和string相互转换的函数再附上来吧

 ''' <summary>    ''' image类型到string类型的转换    ''' </summary>    ''' <param name="img"></param>    ''' <returns></returns>    ''' <remarks></remarks>    Public Function Pic2String(ByVal img As Image) As String        Dim ms As New MemoryStream()        img.Save(ms, Imaging.ImageFormat.Jpeg)        Dim b() As Byte        b = ms.GetBuffer        Dim returnPic As String        returnPic = Convert.ToBase64String(b)        ms.Close()        Return returnPic    End Function    ''' <summary>    ''' string类型到image类型转换    ''' </summary>    ''' <param name="strPic"></param>    ''' <returns></returns>    ''' <remarks></remarks>    Public Function getPicFromString(ByVal strPic As String) As Image        Dim pic As Image        Dim b() As Byte        b = Convert.FromBase64String(strPic)        Dim ms As New MemoryStream(b)        pic = Image.FromStream(ms)        ms.Close()        Return pic    End Function


0 0
原创粉丝点击