科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VB和VB.NET中的XML操作

VB和VB.NET中的XML操作

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文为计划将应用程序更新到VB.NET的VB开发用户提供一些关于XML的建议

作者:洪万福 来源:微软社区 2007年10月15日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
Visual Basic.NET的出现大大改变了这个状况,Visual Basic.NET提供了使用XML、XSL以及其他XML工具的完整工具,使用户很轻松就能实现XML的应用,甚至,在不用编写代码的情况下操作XML。

  ADO.NET是Microsoft新推出的.NET框架中用于数据访问的组件,其最大的优点就是使用XML作为传送数据的标准,只要有一个XML文本,就可以读入ADO.NET的组件中,然后ADO.NET再以XML格式传给数据库或者其他组件。

  可以使用DataSet对象的ReadXML方法将一个XML文件读入到DataSet中,这是一个重载的方法,有几种语法格式,经常用到的如下所示:

ReadXML(FileName)

  其中,FileName为XML文档的名字,现在将前面创建的XML文本“Personal.xml”读入到DataSet中。新建一个项目,在窗体上创建一个Button和一个DataGrid控件,双击Button1输入以下代码:

Dim ds As New DataSet()

'读入XML文档
ds.ReadXml("personal.xml")
Dim tb As DataTable
Dim dv As DataView
tb = ds.Tables(0)
dv = New DataView(tb)
Me.DataGrid1.DataSource = dv

  显示结果如图:



  怎么样?和刚才比起来,代码量是不是少了很多,很容易就实现了XML文件的读取呢?

  .NET框架提供了操作XML文档和数据的一组完整的类。XmlReader和XmlWriter对象以及这两个对象的派生类提供了读取XML和可选验证XML的能力。XmlDocument和XMLSchema对象及其相关类代表了XML本身,而XslTransform和XMPathNavigator类分别支持XSL转换(XSLT)和应XML路径语言(XPath)查询。

  除了提供操作XML数据的外,XML标准还是.NET框 架中数据转换和序列化的基础。多数时候这些后台进行,不过我们已经看到ADO.NET类型化数据集是使用XML架构表示的。

  另外,ADO.NET数据集类对读写XML数据和架构提供直接支持,而且XmlDataDocument提供同步XML数据和关系ADO.NET数据集的能力,这样就可以用XML和关系工具对数据的单个集合进行操作。

  .NET框架公开了一个可用来直接对XML数据进行操作的类集。不过,如果需要使用关系操作(如排序、过滤或检索相关行),数据集则提供了一个更简便的机制。此外,XML类不支持数据绑定,所以如果要向用户显示数据,就必须使用数据集的XML方法。

  幸运的是,将任何一个给定的数据集合作为XML层次结构或关系数据集相互并不排斥。

  1.数据集支持的最直接的XML方法可能就是GetXml和GetXmlSchema了,这方法只将XML数据或XSD架构作为一个字符串值返回。可以用以下代码来实现:

Dim xmlstr As String
xmlStr = Me.dsMasterl.GetXmlSchema()
Me.tbResult.Text = xmlStr

  和

Dim xmlstr As String
xmlStr = Me.dsMasterl.GetXml
Me.tbResult.Text = xmlStr

  2. 数据集的ReadXmlSchema方法可从XSD架构定义或从XML加载数据集架构定义。

  ReadXmlSchema支持4个版本的方法。可以将流、识别文件名的字符串、TextReader或XmlReader对象传递给方法。

  ReadXmlSchema不加载任何数据,它只加载表、列和约束(键和关系)。如果数据集已经架构信息,新表、列和约束将在必要时添加到现有架构中。如果正读取的架构中定义的对象与现有数据集架构冲突,那么ReadXmlSchema方法将会引发一个异常。

Dim newDS As New System.Data.DataSet()
newDS.ReadXmlSchema("masterSchema.xsd")
Me.daCategories.Fill(newDS.Tables("Categories"))
Me.daproducts.Fill(newDS.Tables("Products"))
SetBindings(newDS)

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章