案例:

我有一个文件夹,里面有很多子文件夹,每个子文件夹中都存在一个相同名字的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文件的路径,结果如下图:

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

代码实现:

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

VBScript Sample:遍历文件夹并获取XML文件中指定内容的更多相关文章

  1. perl 遍历文件夹,获取全部文件

    main #!/usr/bin/perl my ($path) = @ARGV; sub scan_file{ my @files = glob(@_[0]); foreach (@files){ i ...

  2. Java web 项目读取src或者tomcat下class文件夹下的xml文件或者properties文件

    //生成一个文件对象: File file = new File(getClass().getClassLoader().getResource("test.xml").getPa ...

  3. 【小技巧】Eclipse 中创建Maven项目后没有WEB-INF文件夹以及web.xml文件

    懒得截图了,一张图配下面步骤搞定. 1.右键项目,选择propertities后选择图中①(被遮住了): 2.先不②勾选去掉,点击Apply:然后在把②处勾选上.此时④位置会出现东东,点击蓝色超链接. ...

  4. 使用GridView来获取xml文件数据

    在任何一个系统中,数据的读取和编辑都是至关重要的.无论你是CS还是BS,都需要对数据进行操作.其实 我们可以发现,很多软件和系统最终都是对于数据库中数据的处理.之前在CS的学习过程中我们接触到了很多 ...

  5. 一个vbs文件将指定文件夹下的文件名输出到指定文件夹下

    'on error resume NextConst MY_COMPUTER=&H11& Const WINDOW_HANDLE=0 Const OPTIONS=0 '设置我的电脑为根 ...

  6. C#获取文件夹下的所有文件的方法

    目录 #基础知识 #只获取目录下一级的文件夹与文件 # 递归地输出当前运行程序所在的磁盘下的所有文件名和子目录名 正文   #基础知识 1.获得当前运行程序的路径 1 string rootPath ...

  7. JAVA 遍历文件夹下的所有文件

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

  8. Android:创建文件或文件夹以及获取sd卡根目录

    目录结构: 功能,可以根据录入的目录或者文件夹生成相应的文件或者文件夹 首先需要添加一个权限: <uses-permission android:name="android.permi ...

  9. JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

随机推荐

  1. 实用程序Commer的开发——U盘内容可选同步至FTP服务器

    需求分析:需要在软件运行后将插入的U盘里面的文件Copy至本机上,然后可选的上传一部分至FTP服务器上. 系统设计:基于MFC的基本对话框程序:主要模块有检测U盘插入并复制文件以及上传到网络.通过对U ...

  2. Delphi XE5 android openurl(转)

    直接上代码: unit OpenViewUrl; interface // URLEncode is performed on the URL// so you need to format it p ...

  3. 1057: [ZJOI2007]棋盘制作 - BZOJ

    Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴 ...

  4. Extjs4 treePanel异步加载菜单(后台从数据库读取)

    运行环境:springMVC+mybatis 一.建表 说明:0表示此节点为非叶子节点,即此节点还包括了子节点:1表示此节点为叶子节点,即此节点没有子节点.:关于图标iconCls是从Extjs的文件 ...

  5. obj转换成数组

    原则上obj是不能转换成数组的.首先array也是obj.只是一个特殊的object. obj一个很关键的点,是拥有成员和方法,撇开方法不说,obj就是一个key-value结构.也就是哈希数组,而j ...

  6. uva 10562

    二叉树的先序遍历  这个还是比较简单的 ~~ /************************************************************************* &g ...

  7. spoj 379

    题是水题  但丫的题目意思太难懂 .......   英语水平  ...... #include <cstdio> #include <cstring> #include &l ...

  8. 互斥锁Mutex与信号量Semaphore的区别

    转自互斥锁Mutex与信号量Semaphore的区别 多线程编程中,常常会遇到这两个概念:Mutex和Semaphore,两者之间区别如下: 有人做过如下类比: Mutex是一把钥匙,一个人拿了就可进 ...

  9. Slider 滑动条效果

    转载自:http://www.cnblogs.com/cloudgamer/archive/2008/12/24/Slider.html 这个滑动条(拖动条)效果,一开始是参考了BlueDestiny ...

  10. like 大数据字段 查询慢

    对于ntext的字段,作为查询条件的时候速度会很慢,比如以下语句: select * from T_KNOWLEDGE where CONTENTS like '%Oracle TimesTen In ...