VBScript Sample:遍歷文件夾並獲取XML文件中指定內容

案例:html

我有一個文件夾,裏面有不少子文件夾,每一個子文件夾中都存在一個相同名字的XML文件,XML文件裏面的標籤結構相同,只是內容不一樣,XML文件中包含ID,Name等標籤。函數

文件夾及文件結構以下圖:spa

要求:3d

遍歷每個XML文件,而後實現如下兩個功能:code

1)輸出全部XML文件中的ID,Name,以及XML文件的路徑;xml

2)用戶能夠提供某一個ID,根據該ID輸出與改ID匹配的XML文件的ID,Name,以及XML文件的路徑。htm

實現(VBScript):對象

代碼邏輯:blog

定義了兩個用戶輸入框,第一個輸入框要求用戶輸入根文件夾路徑,第二個輸入框要求用戶輸入ID。ip

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
相關文章
相關標籤/搜索