vb.net中xml操作实例
记录一下开发过程中进行的一次XML操作实例,实现如下效果:把winform中的一个DataGridView控件绑定的dataset对象转换成xml格式的字符串该winform中还包含了多个textbox以及picturebox控件,相应的数据和上面的dataset数据一并封装到一个xml文件里具体涉及到的技术都在源代码中注释:'''''' 导出当前票据数
·
记录一下开发过程中进行的一次XML操作实例,实现如下效果:
- 把winform中的一个DataGridView控件绑定的dataset对象转换成xml格式的字符串
- 该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
更多推荐
已为社区贡献3条内容
所有评论(0)