首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

弄鼓半天弄出来的查找 XML 节点的 VB.net 2005 代码,找大侠优化

2012-12-17 
搞鼓半天弄出来的查找 XML 节点的 VB.net 2005 代码,找大侠优化Private Const OneNode As String CK

搞鼓半天弄出来的查找 XML 节点的 VB.net 2005 代码,找大侠优化
        Private Const OneNode As String = "CK"

        ''' <summary>
        ''' 查找xml文档子级节点的下一节点是否存在
        ''' </summary>
        ''' <param name="XmlPath">xml路径</param>
        ''' <param name="Node">节点</param>
        ''' <param name="ChildNode" >子节点</param>
        ''' <param name="ChildsNode" >下一子节点</param>
        ''' <param name="ChildesNode" >下一子节点</param>
        Public Shared Function ReadXmlReturnNode(ByVal Node As String, Optional ByVal ChildNode As String = "", Optional ByVal ChildsNode As String = "", Optional ByVal ChildesNode As String = "", Optional ByVal XmlPath As String = "CKs.xml") As Integer
            If Trim(Node) = "" Then
                Return 0
            Else
                Node = Node.ToUpper.Trim
            End If
            Dim docXml As New XmlDocument()
            docXml.Load(XmlPath)
            If docXml.DocumentElement.Name = OneNode Then        '查看文件是否正确
                Dim v1, v2, v3 As Boolean
                If Not Trim(ChildNode) = "" Then
                    v1 = True
                    ChildNode = ChildNode.ToUpper.Trim
                    If Not Trim(ChildsNode) = "" Then
                        v2 = True
                        ChildsNode = ChildsNode.ToUpper.Trim
                        If Not Trim(ChildesNode) = "" Then
                            v3 = True
                            ChildesNode = ChildesNode.ToUpper.Trim


                        End If
                    End If
                End If
                For Each ThisRec As XmlNode In docXml.DocumentElement
                    If ThisRec.Name = Node Then     '查看符合要求的第一个子节点
                        If v1 Then
                            For Each Child As XmlNode In ThisRec
                                If Child.Name = ChildNode Then      '查看符合要求的第二个子节点
                                    If v2 Then
                                        For Each Childs As XmlNode In Child
                                            If Childs.Name = ChildsNode Then        '查看符合要求的第三个子节点
                                                If v3 Then
                                                    For Each Childes As XmlNode In Childs
                                                        If Childes.Name = ChildesNode Then        '查看符合要求的第四个子节点
                                                            Return 4
                                                        End If


                                                    Next
                                                Else
                                                    Return 3
                                                End If
                                            End If
                                        Next
                                    Else
                                        Return 2
                                    End If
                                End If
                            Next
                        Else
                            Return 1
                        End If
                    End If
                Next
            End If
            Return 0                '任一不符合均返回 0
        End Function

-------------这段段码感觉太长了点,会不会性能上稍弱了点,如果会,希望有大侠指点下-------------

[解决办法]
把现用的例子发个
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CK CreateDate="2012-09-10">
  <!--非必须勿动此文件!!!-->
  <LOGIN>
    <URL>Provider=SQLOLEDB.1;Data Source=.;User ID=sa;password=;Initial Catalog=CK</URL>
    <USER>123</USER>
    <USER>123</USER>
    <USER>123</USER>
    <USER>123</USER>
    <OR>11<x2>11</x2></OR>
  </LOGIN>
  <COR>
    <USER>123</USER>
  </COR>
  <X2 />
</CK>

主要代码会在 CK 根节点下进行更改,所以 CK 被我常量化了.

热点排行