读写xml:vb.net读写xml方法|datagrid与xml

<VB.net|xml>vb.net读写xml方法|datagrid与xml
2007-07-05 14:15
vb.net 读写xml方法(1)


Dim domXmlDocument As System.Xml.XmlDocument
Dim tmpPath As String = AppTempFilePath
Dim xmlFile As String = tmpPath + "\testXml.xml"

’窗体加载事件
Private Sub TestXml_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
’读xml过程测试通过
Dim domXmlDocument As System.Xml.XmlDocument
Dim tmpPath As String = AppTempFilePath
Dim xmlFile As String = tmpPath + "\testXml.xml"
Dim reader As System.Xml.XmlReader = Nothing
Try
reader = New Xml.XmlTextReader(xmlFile)
’reader.
While reader.Read
Me.lboxXml.Items.Add(reader.Name + reader.Value)
End While
Catch ex As Exception
MsgBox(ex.Message)
Finally
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub
’载入xml事件
Private Sub btnXmlLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXmlLoad.Click
’Me.lboxXml.Items.Clear()
’’读xml过程测试通过
’Dim reader As System.Xml.XmlReader = Nothing
’Try
’ reader = New Xml.XmlTextReader(xmlFile)
’ While reader.Read
’ Me.lboxXml.Items.Add(reader.Name + ":" + reader.Value)
’ End While
’Catch ex As Exception
’ MsgBox(ex.Message)
’Finally
’ If Not (reader Is Nothing) Then
’ reader.Close()
’ End If
’End Try
Dim ds As New DataSet
Try
’如果直接使用ds做datasource则不会展开datagrid,用dv则可以直接显示正确。
ds.ReadXml(xmlFile)
Dim tb As DataTable
Dim dv As DataView
tb = ds.Tables(0)
dv = New DataView(tb)
DataGrid1.DataSource = dv
’DataGrid1.DataMember = "testXmlMember"
’DataGrid1.DataMember = "employeefname"
’Dim dxd As New XmlDataDocument
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub
’保存新建xml内容事件
Private Sub btnSaveNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveNew.Click
Dim myTW As New XmlTextWriter(tmpPath + "\testXmlWrite.xml", Nothing)
myTW.WriteStartDocument()
myTW.Formatting = Formatting.Indented
myTW.WriteStartElement("Team")
myTW.WriteStartElement("player")
myTW.WriteAttributeString("Name", "George Zip")
myTW.WriteAttributeString("Position", "QB")
myTW.WriteElementString("Nickname", "Zippy")
myTW.WriteElementString("JerseyNumber", XmlConvert.ToString(7))
myTW.WriteEndElement()
myTW.WriteEndElement()
myTW.WriteEndDocument()
myTW.Close()
End Sub

对于修改datagrid中指定内容并保存到xml中还不会,弄明白了,在vb.net与xml读写的2中写出来!



vb.net读写xml(2)--实现datagrid与xml的沟通

注:我主要参考网上一篇文章名为:《VB和VB.NET中的XML操作》文章url:http://www.wrclub.net/study/listarticle.aspx?id=1459
在里面里介绍了大体过程,但是,在我的实际应用过程中
在文章代码中:
Dim mySDD As System.Xml.XmlDataDocument
myXDD = New System.Xml.XmlDataDocument(Me.dsMaster1)
myXDD.Load ("dataOnly.xml")
SetBindings(Me.dsMaster1)
SetBindings这一方法始终不知道是什么东西,在msdn里也找不到,所以最后还是没有按照他的文章方法实现。参照了一下msdn,不过此文章对我的帮助还是比较大,虽然也导致我走了一些弯路。
在这里主要帖出两个事件,即将xml载入到datagrid中的办法:
'如果直接使用ds做datasource则不会展开datagrid,用dv则可以直接显示正确。
Dim ds As DataSet = New DataSet
ds.ReadXml(xmlFile)
Dim tb As DataTable
Dim dv As DataView
tb = ds.Tables(0)
dv = New DataView(tb)
'DataGrid1.DataSource = dv
'DataGrid1.DataMember = "testXmlMember"
'DataGrid1.DataMember = "employeefname"
'Dim dxd As New XmlDataDocument
DataGrid1.SetDataBinding(dv, "")
xmlDD = New XmlDataDocument(ds)
注意ds和xmlDD这两个引用变量的位置。查找msdn可以找到对应的帮助。具体就是避免重复绑定的错误。
另外一个事件在保存事件中,只要直接调用:
xmlDD.Save(xmlFile)
即可
这样就可以实现xml显示在grid中,然后通过保存,把grid中的内容保存到xml文件中。
万事开头难,开个头,接下来的就不那么难了!
如果用.net来操作xml,我想主要用到的类也就是XMLDocument、XMLReader、XMLWriter.以及他们的衍生类,在MSDN里可以找到!
接下来的任务就是:获取某一节点,然后只需要更新某一节点,以及通过xml关系表映射关系到正确对象等问题了!



求助:关于读取 XML 的相关操作


按照下面的方式将XML文件里边的内容读到ListBox1中去,可是它却将每个元素也都读进去,如果把其中的"ListBox1.Items.Add(reader1.Name & reader1.Value)"改成"ListBox1.Items.Add(reader1.Value)",它又会以空行代替原先读进的元素名,就是说有什么办法可以让ListBox1只读进最后边子元素里的值而不包括它元素名的父元素名,

-------------------
Dim strfilename As String
Dim reader1 As System.Xml.XmlTextReader = Nothing
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
strfilename = OpenFileDialog1.FileName
Try
reader1 = New Xml.XmlTextReader(strfilename)
While reader1.Read
ListBox1.Items.Add(reader1.Name & reader1.Value)
End While
Catch ex As Exception
MessageBox.Show(ex.ToString + " ")
Finally
If Not (reader1 Is Nothing) Then
reader1.Close()
End If
End Try
End If


例如XML文件是这样的,
----------------
<A>
<B>123</B>
</A>
----------------
读取后在ListBox1显示的是:
----------------
<A>
<B>
123
</B>
</A>
----------------
我就是希望让它只显示"123"就行了,如果把"ListBox1.Items.Add(reader1.Name & reader1.Value)"改成"ListBox1.Items.Add(reader1.Value)",它又会把各元素换成空行显示,变成
----------------


ABC



按照下面的方式将XML文件里边的内容读到ListBox1中去,可是它却将每个元素也都读进去,如果把其中的"ListBox1.Items.Add(reader1.Name & reader1.Value)"改成"ListBox1.Items.Add(reader1.Value)",它又会以空行代替原先读进的元素名,就是说有什么办法可以让ListBox1只读进最后边子元素里的值而不包括它元素名的父元素名,

While reader1.Read
if reader1.Value.trim() <> "" Then
ListBox1.Items.Add(reader1.Name & reader1.Value)
End If
End While


Dim strfilename As String
Dim reader1 As System.Xml.XmlTextReader = Nothing
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
strfilename = OpenFileDialog1.FileName
Try
reader1 = New Xml.XmlTextReader(strfilename)
While reader1.Read
ListBox1.Items.Add(reader1.Name & reader1.Value)
End While
Catch ex As Exception
Mess
Tags:  读写xml

延伸阅读

最新评论

发表评论