zoukankan      html  css  js  c++  java
  • VBScript Sample:遍历文件夹并获取XML文件中指定内容

    案例:

    我有一个文件夹,里面有很多子文件夹,每个子文件夹中都存在一个相同名字的XML文件,XML文件里面的标签结构相同,只是内容不同,XML文件中包含ID,Name等标签。

    文件夹及文件结构如下图:

    要求:

    遍历每一个XML文件,然后实现以下两个功能:

    1)输出所有XML文件中的ID,Name,以及XML文件的路径;

    2)用户可以提供某一个ID,根据该ID输出与改ID匹配的XML文件的ID,Name,以及XML文件的路径。

    实现(VBScript):

    代码逻辑:

    定义了两个用户输入框,第一个输入框要求用户输入根文件夹路径,第二个输入框要求用户输入ID。

    1)如果用户只提供了根文件夹路径,用户ID未输入,则输出所有XML文件中的ID,Name,以及XML文件的路径,结果如下图:

    image

    2)如果用户既提供了根文件夹路径,又提供了用户ID,则根据该ID输出与改ID匹配的XML文件的ID,Name,以及XML文件的路径,结果如下图:

    image

    代码实现:

    Option Explicit
     
    Dim strPath,strID
    Dim objFSO
    Dim objXML
    Dim strResult
     
    strPath = InputBox("Please input the path of your root folder: ")
    strID = InputBox("Please input the ID which you want to search: ")
    '创建FileSystemObject对象用于遍历文件夹
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    '创建Microsoft.XMLDOM对象用于读取XML文件
    Set objXML = CreateObject("Microsoft.XMLDOM")
     
    '判断用户输入的根文件夹是否存在
    If objFSO.FolderExists(strPath) Then
    '    若根文件夹存在,则调用GetXMLInfo函数实现读取XML功能
        strResult = GetXMLInfo(strPath,strID)
    Else
        MsgBox "Please input a valid forlder name."    
    End If
    '销毁objFSO和objXML对象
    Set objFSO = Nothing
    Set objXML = Nothing
    '输出结果
    If strResult <> "" Then
        MsgBox strResult
    Else
        MsgBox "No records found!"
    End If
     
    Function GetXMLInfo(xmlPath,xmlID)
        Dim objFolders, objFolder
        Dim strFolderpath, strFilepath
        Dim objDocroot
        Dim strOutput,strXMLID,strXMLName,strXMLPath
        
    '    获取子文件夹
        Set objFolders = objFSO.GetFolder(xmlPath).SubFolders
    '    遍历子文件夹
        For Each objFolder In objFolders
    '        通过路径拼接得到XML文件路径(因为每个XML文件名字相同,所以可以直接拼接得到XML文件路径)
            strFolderpath = objFolder.Path
            strFilepath = strFolderpath & "TestFile.xml"
            
            If objFSO.FileExists(strFilepath) Then
    '            读取XML文件
                objXML.load(strFilepath)
                Set objDocroot = objXML.documentElement                
                strXMLID = objDocroot.selectSingleNode("//xmlLable01/ID").text
                strXMLName = objDocroot.selectSingleNode("//xmlLable01/Name").text
                strXMLPath = strFilepath
    '            拼接输出结果
                If xmlID = "" Then
                    strOutput = strOutput & vbCrLf & vbCrLf & "ID: " & strXMLID & _
                    vbCrLf & "Name: " & strXMLName & _
                    vbCrLf & "XMLPath: " & strXMLPath 
                ElseIf InStr(strXMLID,xmlID) >0 Then
                    strOutput = strOutput & vbCrLf & "ID: " & strXMLID & _
                    vbCrLf & "Name: " & strXMLName & _
                    vbCrLf & "XMLPath: " & strXMLPath 
                    Exit For
                End If
    '            销毁objDocroot对象
                Set objDocroot = Nothing
            End If
        Next
    '    销毁objFolder及objFolders对象
        Set objFolder = Nothing
        Set objFolders = Nothing 
    '    函数返回值
        GetXMLInfo = strOutput        
    End Function
  • 相关阅读:
    哥哥牟:诺拉的死亡是由于寻找食物的粪便!
    Eclipse建筑物SSH(struts-2.2.3 + spring-2.5.6 + hibernate-3.6.8)相框-随着源代码
    Centos6.5下一个Ceph存储集群结构
    linux input如何固定设备event handler
    sizeof运营商
    【小言的设计模式】类之间的关系
    2015第11周五
    2015第11周四~代发公司招聘信息
    2015第11周三
    2015第11周二
  • 原文地址:https://www.cnblogs.com/ITGirlXiaoXiao/p/3154404.html
Copyright © 2011-2022 走看看