VB.net 读写 XML 的类

转载 2012年03月27日 20:50:30

VB.net 读写 XML 的类...
'使用起来很简单,支持多级项目,级间使用'/'分割。
'厄,Bug 还是有的,但对正常操作没有大的影响,
'如果有什么大的 Bug 或改进建议,请联系我...
Imports System.Xml

Public Class Xml_ClsClass Xml_Cls
    Private XmlDoc As XmlDocument
    Private XmlFile As String

    Public ReadOnly Property XmlFileName()Property XmlFileName() As String
        Get
            Return XmlFile
        End Get
    End Property

    Public ReadOnly Property XmlText()Property XmlText() As String
        Get
            Return XmlDoc.InnerXml
        End Get
    End Property

    Sub New()Sub New(ByVal FileName As String, Optional ByVal CreateNew As Boolean = True, Optional ByVal Root As String = "XML", Optional ByRef IsOK As Boolean = False)
        IsOK = False
        XmlFile = ""

        Dim reader As System.Xml.XmlReader = Nothing
        Try
            reader = New System.Xml.XmlTextReader(FileName)
            reader.Read()
        Catch ex As Exception
            If Not (reader Is Nothing) Then
                reader.Close()
            End If
            Debug.Print("New - " & ex.Message)
            If Not Create(FileName, Root) Then
                Return
            End If
        Finally
            If Not (reader Is Nothing) Then
                reader.Close()
            End If
        End Try
        IsOK = True
        XmlFile = FileName
        XmlDoc = New XmlDocument
        XmlDoc.Load(XmlFile)
    End Sub

    Public Function Create()Function Create(ByVal FileName As String, Optional ByVal Root As String = "XML") As Boolean
        Dim NewXML As XmlTextWriter = Nothing

        Try
            NewXML = New XmlTextWriter(FileName, Nothing)

            NewXML.Formatting = Formatting.Indented
            NewXML.WriteStartDocument()
            NewXML.WriteComment(My.Application.Info.AssemblyName & " Settings")

            NewXML.WriteStartElement(Root)

            NewXML.WriteAttributeString("Powered", "Null")

            NewXML.WriteEndElement()
            NewXML.WriteEndDocument()

            NewXML.Flush()
            NewXML.Close()
        Catch ex As Exception
            Debug.Print("Create - " & ex.Message)
            Return False
        Finally
            If NewXML IsNot Nothing Then
                NewXML.Close()
                NewXML = Nothing
            End If

        End Try

        Return True
    End Function

    Public Function Save()Function Save(ByVal aSection As String, ByVal aKey As String, ByVal aValue As String) As Boolean
        Dim Paths() As String
        Dim n As Integer

        Dim Node, Node2 As XmlNode
        Dim Ele As XmlElement

        While Strings.Left(aSection, 1) = "/"
            aSection = Strings.Mid(aSection, 2)
        End While

        '段名是否为空
        If aSection = "" Then
            XmlDoc.DocumentElement.RemoveAll()
        Else

            Paths = Strings.Split(aSection, "/")
            Try
                Node = XmlDoc.DocumentElement.SelectSingleNode(Paths(n))

                If Node Is Nothing Then
                    Ele = XmlDoc.CreateElement(Paths(n))
                    Node = XmlDoc.DocumentElement.AppendChild(Ele)
                End If

                For n = 1 To Paths.Length - 1
                    If Paths(n) = "" Then Continue For

                    Node2 = Node.SelectSingleNode(Paths(n))
                    If Node2 Is Nothing Then
                        Ele = XmlDoc.CreateElement(Paths(n))
                        Node2 = Node.AppendChild(Ele)
                    End If
                    Node = Node2
                Next
                '键名是否为空
                If aKey = "" Then
                    Node.RemoveAll()
                Else
                    Ele = Node.Item(aKey)

                    If Ele Is Nothing Then
                        Ele = XmlDoc.CreateElement(aKey)
                        Node.AppendChild(Ele)
                    End If
                    '值是否为空
                    If aValue = "" Then
                        Node.RemoveChild(Ele)
                    Else
                        Ele.InnerText = aValue
                    End If
                End If
            Catch ex As Exception
                Debug.Print(ex.Message)
                Return False
            End Try
        End If

        XmlDoc.Save(XmlFile)
        Return True
    End Function

    Public Function Read()Function Read(ByVal aSection As String, ByVal aKey As String, Optional ByVal aDefaultValue As String = "") As String
        Dim Node As XmlNode
        Node = (XmlDoc.DocumentElement).SelectSingleNode(aSection & "/" & aKey)
        If Node Is Nothing Then Return aDefaultValue
        Return Node.InnerText
    End Function
End Class

VB.net学习笔记(二十一)XML流的读写

System.Xml名称空间支持XML的处理,为了生成和浏览XML文档,使用两种访问方式: 一、读写方式     (一)基于流的方式     特点:速度快,可连续读写,缺点不能作为节点、元素等进...
  • dzweather
  • dzweather
  • 2016年05月22日 12:07
  • 4191

VB.NET中操作xml文件

[转自]http://tech.sina.com.cn/s/2008-07-07/1608722485.shtml 已知有一个XML文件(bookstore.xml)如下: Oberon...
  • xiaolinyouni
  • xiaolinyouni
  • 2012年01月18日 16:10
  • 2951

vb.net 创建、修改、读取XML的方法

        创建XML文件          要创建的XML文件名         Private Sub createXML()Sub createXML(ByVal xmlFileName A...
  • wwwdbs
  • wwwdbs
  • 2008年03月05日 09:33
  • 17655

.net操作XmlDocument添加或合并节点(VB)

,.NET Framework 在它的命名空间System.Xml 就提供了一种可以很方便的操作xml的类XmlDocument,它使用起来非常容易,XmlDocument 其实就是一个简单的树。下面...
  • greilly
  • greilly
  • 2007年09月07日 13:54
  • 1551

VB.NET2005读取XML数据

通过调用CreateDataSetFromXml取得XML数据Imports System.XmlPublic Const FILE_CONFIG = "MZZ.xml" Public Cons...
  • expert2000
  • expert2000
  • 2010年05月18日 09:24
  • 1143

VB.NET 读取写入XML文件

Public Class CSysXML Dim mXmlDoc As New System.Xml.XmlDocument Public XmlFile As String ...
  • wang19850219
  • wang19850219
  • 2014年11月27日 11:14
  • 3519

VB.net 读写 XML 的类

VB.net 读写 XML 的类... '使用起来很简单,支持多级项目,级间使用'/'分割。 '厄,Bug 还是有的,但对正常操作没有大的影响, '如果有什么大的 Bug 或改进建议,请联系我...
  • gkq8124372
  • gkq8124372
  • 2012年03月27日 20:50
  • 1203

vb.net读取xml文件中的节点内容

呵呵,先声明一下,会的就不用看了,本人的水平很菜,也就用xml文件配置一下软件中的一些参数.xml文件中的内容如下: 15 14 通过一个函数来读取data结点下的值,...
  • wjbych
  • wjbych
  • 2012年01月10日 17:04
  • 2522

如何用VB.net快速读取较大的xml文件

我使用VB或VB.net语言,采用字典按txt文本方式来读取xml文件,在xml文件较小时(如附件中的ADDTTYPSRBRLC.xml)读取速度很快, 并将TTYPSRBRLC用表格table的方...
  • u012187684
  • u012187684
  • 2014年01月02日 19:41
  • 767

VB.net 读写 XML 的类...

Powered By Null AT 20070507HeTaoOS@Gmail.comhttp://hi.baidu.com/hetaoos使用起来很简单,支持多级项目,级间使用/分割。厄,Bug ...
  • HeTaoOS
  • HeTaoOS
  • 2007年05月07日 10:21
  • 1933
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB.net 读写 XML 的类
举报原因:
原因补充:

(最多只允许输入30个字)