`
hereson2
  • 浏览: 466368 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

XML完整操作模块

XML 
阅读更多
Option Explicit

Private XML_Dom As FreeThreadedDOMDocument40


'--------------------------------------------------------------------------------
' 工程:       Prj_Rpt
' 程序:       CreateNode
' 描述:       建立一个XML节点,返回建立好的节点对象
' 设计:       Winahriman
' 时间:       1-26-2008-13:1:40
'
' 参数:       NodeName (String)         需要建立的节点的名字
'             Name() (Variant)          可变参数,参数定义(如果传入只传入一个参数,表示该节点只有值没有属性值)
'                                       如果传入的双数参数表示该节点只有属性及属性值,没有节点值,如果传入的是大于1的单数参数
'                                       则表示即有属性及属性值也同时有节点值,属性及属性值的参数表示是,每2个参数的第一个参数为属性名
'                                       第二个参数为属性值
'--------------------------------------------------------------------------------

Public Function CreateNode(ByVal NodeName As String, ParamArray Name() As Variant) As IXMLDOMNode

    Dim Int_I As Integer

    Dim XML_NewNode As IXMLDOMNode
   
    Set XML_Dom = New FreeThreadedDOMDocument40
   
    Set XML_NewNode = XML_Dom.CreateNode(1, NodeName, "")            '建立一个节点

    If UBound(Name) = -1 Then           '没有可变参数

    Else
        Dim Xml_AttNode As IXMLDOMNode       '节点属性设置
        If UBound(Name) Mod 2 <> 0 Then      '如果可变参数数目和2取模不等于0,表示只有属性和属性值,没有节点值
            For Int_I = LBound(Name) To UBound(Name) Step 2             '循环可变参数数组
                Set Xml_AttNode = XML_Dom.CreateNode(2, Name(Int_I), "")    '加入一个属性名
                Xml_AttNode.Text = Name(Int_I + 1)                          '加入以个属性值
                XML_NewNode.Attributes.setNamedItem Xml_AttNode             '将节点属性加入对应节点
            Next
        Else
            If UBound(Name) <> 0 Then
                For Int_I = LBound(Name) To UBound(Name) - 1 Step 2           '循环可变参数数组
                    Set Xml_AttNode = XML_Dom.CreateNode(2, Name(Int_I), "")    '加入一个属性名
                    Xml_AttNode.Text = Name(Int_I + 1)                          '加入以个属性值
                    XML_NewNode.Attributes.setNamedItem Xml_AttNode             '将节点属性加入对应节点
                Next
            End If

            Dim XML_CDATA As IXMLDOMCDATASection
            Set XML_CDATA = XML_Dom.createCDATASection(Name(UBound(Name)))            '建立CDATA值
            XML_NewNode.appendChild XML_CDATA

        End If
    End If
   
    Set XML_Dom = Nothing
   
    Set CreateNode = XML_NewNode
End Function



'--------------------------------------------------------------------------------
' 工程:       Prj_Rpt
' 程序:       LoadXmlNode
' 描述:       加载一个XML文档,返回文档主节点(因为在XML文档中只允许有一个主节点,同时还包括以个文件头)
' 设计:       Winahriman
' 时间:       1-28-2008-09:00:55
'
' 参数:       Xml_File (String)         'XML文档路径
'--------------------------------------------------------------------------------
Public Function LoadXmlNode(ByVal Xml_File As String) As IXMLDOMNode
    Dim Xml_FaterNode As IXMLDOMNode
   
    Set XML_Dom = New FreeThreadedDOMDocument40
   
    If XML_Dom.Load(Xml_File) = False Then Exit Function
   
    Set LoadXmlNode = XML_Dom.childNodes(1)
   
    Set XML_Dom = Nothing
   
End Function



'--------------------------------------------------------------------------------
' 工程:       Prj_Rpt
' 程序:       DeleteNode
' 描述:       移除一个主节点,同时返回移除后的节点对象
' 设计:       Winahriman
' 时间:       1-28-2008-09:07:14
'
' 参数:       Xml_FatherNode (IXMLDOMNode)      需要移除节点的父域节点对象
'             DeleteNodeName (String)           需要移除的节点名
'--------------------------------------------------------------------------------
Public Function DeleteNode(ByVal Xml_FatherNode As IXMLDOMNode, ByVal DeleteNodeName As String) As IXMLDOMNode
    Dim Xml_FindNode As IXMLDOMNode
   
    Set Xml_FindNode = Xml_FatherNode.selectSingleNode(DeleteNodeName)
   
    Xml_FatherNode.removeChild Xml_FindNode
   
    Set DeleteNode = Xml_FatherNode
End Function




'--------------------------------------------------------------------------------
' 工程:       Prj_Rpt
' 程序:       ScreenSencetionValue
' 描述:       查询一个节点或节点值,其中第三个参数为可选参数,返回真假
' 设计:       Winahriman
' 时间:       1-26-2008-15:08:57
'
' 参数:       Xml_Node (IXMLDOMNode)   传入父域节点对象
'             ScreenQualification (String)   需要查询的子节点的字符串(如果该节点具有属性值,并且要按其属性值进行查询那么输入格式为/子节点名[@属性名='属性值'])
'                                            这写个例子:比如一个XML节点为:<test><key name="Delete">xxxx</key></test>我们需要查找节点<key name="Delete">xxxx</key>
'                                            那么我们传入该函数的xml_node是节点<test>,我们的查询子节点字符串的写法就是"/key[@name='Delete']"这样就会找到该节点
'             Value (String = "")      可选参数,如果传入该参数则将会返回查询到的节点的值,如果不传入该参数,则该函数仅作为节点是否存在的查询
'--------------------------------------------------------------------------------
Public Function ScreenSencetionValue(ByVal Xml_Node As IXMLDOMNode, ByVal ScreenQualification As String, Optional ByRef Value As String = "") As Boolean
    Dim Xml_FindNode As IXMLDOMNode
    Value = ""
    Set Xml_FindNode = Xml_Node.selectSingleNode(ScreenQualification)
    If Xml_FindNode Is Nothing Then
        Exit Function
    End If
    Value = Xml_FindNode.Text
    ScreenSencetionValue = True
End Function




'--------------------------------------------------------------------------------
' 工程:       Prj_Rpt
' 程序:       SencetionLens
' 描述:       查询一个节点的长度(也就是需要查询的节点的子节点个数)
' 设计:       Winahriman
' 时间:       1-27-2008-09:17:21
'
' 参数:       Xml_Node (IXMLDOMNode)            需要查询的节点对象
'             ScreenQualification (String)      查询的字符串使用方式和查询节点相同
'--------------------------------------------------------------------------------
Public Function SencetionLens(ByVal Xml_Node As IXMLDOMNode, ByVal ScreenQualification As String) As Long
    Dim Xml_FindNode As IXMLDOMNode
   
    Set Xml_FindNode = Xml_Node.selectSingleNode(ScreenQualification)
    If Xml_FindNode Is Nothing Then
        Exit Function
    End If
   
    SencetionLens = Xml_FindNode.childNodes.length

End Function




'--------------------------------------------------------------------------------
' 工程:       Prj_Rpt
' 程序:       EditSencetionValue
' 描述:       修改节点值 返回真假
' 设计:       Winahriman
' 时间:       1-27-2008-11:18:43
'
' 参数:       Xml_Node (IXMLDOMNode)            需要修改节点值的父域节点,引用传递
'             ScreenQualification (String)      查询字符串,使用方式和节点查询相同
'             Value (String)                    修改的字符串
'--------------------------------------------------------------------------------
Public Function EditSencetionValue(ByRef Xml_Node As IXMLDOMNode, ByVal ScreenQualification As String, ByVal Value As String) As Boolean
    Dim Xml_FindNode As IXMLDOMNode
   
    Set Xml_FindNode = Xml_Node.selectSingleNode(ScreenQualification)
    If Xml_FindNode Is Nothing Then
        Exit Function
    End If
    Xml_FindNode.Text = ""
    Dim XML_CDATA As IXMLDOMCDATASection
   
    Set XML_Dom = New FreeThreadedDOMDocument40
   
    Set XML_CDATA = XML_Dom.createCDATASection(Value)
   
    Xml_FindNode.appendChild XML_CDATA
   
    Set XML_Dom = Nothing
   
    EditSencetionValue = True

End Function


'--------------------------------------------------------------------------------
' 工程:       Prj_Rpt
' 程序:       CreateXMLFile
' 描述:       创建一个XML文档
' 设计:       Winahriman
' 时间:       1-28-2008-09:20:22
'
' 参数:       FileName (String)             文件路径名
'             Xml_Node (IXMLDOMNode)        XML主节点
'--------------------------------------------------------------------------------
Public Function CreateXMLFile(ByVal FileName As String, ByVal Xml_Node As IXMLDOMNode) As Boolean
    Dim Pi As IXMLDOMProcessingInstruction                                                      '申明一个版本头
   
    Set XML_Dom = New FreeThreadedDOMDocument40
   
    Set Pi = XML_Dom.createProcessingInstruction("xml", "version=""1.0"" encoding=""gb2312""")  '建立一个版本头对象
    XML_Dom.insertBefore Pi, XML_Dom.childNodes.Item(0)                                         '插入版本头
    XML_Dom.appendChild Xml_Node                                    '建立一个主节点                                                                     '保存新的XML文件
    XML_Dom.Save FileName
   
    Set XML_Dom = Nothing
End Function
分享到:
评论

相关推荐

    易语言 XML 解析模块

    该模块的核心功能是通过对象操作方式来解析XML文档,这种方式使得开发者可以更直观地理解XML结构,并能方便地访问和修改XML文档中的各个元素。在易语言中,对象通常代表一个具体的实体,通过对象的方法和属性,可以...

    易语言COM对象操作XML模块

    易语言COM对象操作XML模块源码,COM对象操作XML模块,test,取根节点名,取父节点名,导入,导入XML,取子节点数,取节点名,枚举子节点名,枚举属性名值,删除节点,删除属性,导出到文件,取XML源码,取XML文本,取XML路径,插入...

    XML支持模块.rar

    XML(eXtensible Markup ...了解并熟练运用XML及其相关技术,有助于提高开发效率,实现不同系统间的数据互操作性。易语言XML支持模块的源码分析,可以帮助开发者深入理解XML在实际应用中的处理过程,提升编程能力。

    COM对象操作XML模块.rar

    7. **代码示例和教程**:压缩包中可能包含一些使用示例,帮助开发者了解如何在易语言中实例化和使用XML相关的COM对象,以及如何执行常见的XML操作。 总之,"COM对象操作XML模块"是一个易语言的组件,用于利用COM...

    易语言节点与XML转换模块

    在“易语言节点与XML转换模块”中,我们主要讨论的是如何在易语言环境中处理XML数据,并进行节点与XML之间的相互转换。 XML(Extensible Markup Language)是一种标记语言,广泛用于数据交换和存储,其结构清晰、...

    易语言源码易语言XML对象操作源码.rar

    在易语言中,XML(Extensible Markup Language)对象操作是常见的数据处理任务,XML作为一种结构化数据格式,常用于存储和传输数据。本压缩包“易语言XML对象操作源码.rar”提供了相关的源代码,可以帮助我们深入...

    vb6中xml 操作模块 完整代码.

    包含了常用的xml操作.并有详细说明.不需要在写任何代码.包含了xml的常用操作.代码中使用了xml4.0的库.需要自己手动添加.

    XML_Tree模块.rar

    XML_Tree模块的源码可以帮助学习者深入理解XML处理的内部机制,通过查看和分析源码,可以提升对XML操作和易语言编程的理解。 在实际应用中,XML_Tree模块可以广泛应用于数据交换、配置文件存储、网络通信等领域。...

    易语言源码易语言XML_Tree模块源码.rar

    总的来说,"易语言XML_Tree模块源码"涵盖了XML数据处理的关键知识点,包括XML解析、创建、操作和保存,是易语言开发者深入理解XML处理和提高编程技巧的重要资源。通过分析和研究这个模块,开发者可以更好地掌握...

    COM对象操作XML易语言模块源码

    资源介绍:。易语言COM对象操作XML模块源码例程程序结合IXMLDOMDocument2对象实现XML操作。点评:易语言COM对象操作XML模块源码仅供参考。资源作者:。易语言源码网。资源界面:。资源下载:。

    易语言源码易语言xml对象应用模块源码.rar

    通过分析这个源码,开发者不仅可以学习到易语言的基本语法和XML操作,还可以了解到如何在实际项目中应用这些知识。这对于提升易语言编程技能和理解XML数据处理流程非常有帮助。同时,这也是一个很好的实践案例,可以...

    雷神_模拟器操作模块 v1.0.1.0.rar

    雷神_模拟器操作模块则是基于易语言开发的,它为开发者提供了一套完整的接口,可以方便地实现对模拟器的启动、暂停、停止、重启以及发送各种模拟输入等操作,极大地降低了开发者与模拟器交互的复杂性。 模块中的...

    xml对象应用模块.rar

    在易语言中,通过XML对象,我们可以操作这些元素来实现数据的读写。 1. **XML解析**:解析XML文档是将XML文本转换为内存中的数据结构,以便进一步处理。易语言的XML对象可能提供了解析XML字符串或文件的方法,例如`...

    易语言 xml解析 易语言 xml解析 教程 带源码

    2. **XML解析器**:在易语言中,我们需要使用特定的XML解析库或模块来解析XML文档。这些解析器可以帮助我们解析XML数据,将其转换为易语言可以处理的数据结构,如字节流、字符串或对象。常见的解析方式有DOM...

    易语言xml对象应用模块源码.zip

    总的来说,易语言XML对象应用模块提供了一套完整的XML处理方案,使得开发者可以方便地在易语言环境中进行XML数据的读取、解析、修改和保存操作。虽然没有提供详细的标签信息,但我们可以推测这个压缩包中的源码可能...

    易语言XML支持模块

    通过这个模块,开发者可以实现XML文件的读取、写入、解析以及节点操作等功能。 1. **导入与导出**:XML支持模块提供导入和导出功能,使得易语言程序能够将XML文件作为数据源或者目标文件进行操作。导入功能允许程序...

    xml读写操作类

    XML文件的读写操作对于处理配置文件、序列化对象或跨平台通信等场景至关重要。本篇将详细讲解如何在C++中进行XML的读写操作。 首先,我们需要了解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、...

    C# ASP.NET 模块 - 基于XML存储的论坛模块

    1. **XML解析与操作**:使用C#中的System.Xml命名空间,如XmlDocument或XmlNodeReader类,来读取、创建和修改XML文件。这涉及到解析XML文档结构,查找特定元素,以及添加、删除或更新元素内容。 2. **ASP.NET Web ...

    易语言源码易语言XML支持模块源码.rar

    4. **XML操作**:源码可能提供了对XML节点的增删改查功能,例如添加新节点、删除节点、修改节点属性或查询特定节点。这些操作是通过调用易语言的命令或者自定义的函数来实现的。 5. **错误处理**:任何处理XML的...

    XmlDom - 全能最强XML模块

    XmlDom是Python中的一个强大的XML处理模块,它允许开发者通过DOM(Document Object Model)接口来操作XML文档。DOM是一种将XML文档转换为树型结构的模型,使得我们可以方便地对XML文档进行读取、修改和创建。 首先...

Global site tag (gtag.js) - Google Analytics