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

_z3422_ 2012-09-11 03:10:27
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

-------------这段段码感觉太长了点,会不会性能上稍弱了点,如果会,希望有大侠指点下-------------
...全文
76 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
_z3422_ 2012-09-11
  • 打赏
  • 举报
回复
把现用的例子发个
<?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 被我常量化了.

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧