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文件的路径,结果如下图:

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文件中指定内容的更多相关文章
- perl 遍历文件夹,获取全部文件
main #!/usr/bin/perl my ($path) = @ARGV; sub scan_file{ my @files = glob(@_[0]); foreach (@files){ i ...
- Java web 项目读取src或者tomcat下class文件夹下的xml文件或者properties文件
//生成一个文件对象: File file = new File(getClass().getClassLoader().getResource("test.xml").getPa ...
- 【小技巧】Eclipse 中创建Maven项目后没有WEB-INF文件夹以及web.xml文件
懒得截图了,一张图配下面步骤搞定. 1.右键项目,选择propertities后选择图中①(被遮住了): 2.先不②勾选去掉,点击Apply:然后在把②处勾选上.此时④位置会出现东东,点击蓝色超链接. ...
- 使用GridView来获取xml文件数据
在任何一个系统中,数据的读取和编辑都是至关重要的.无论你是CS还是BS,都需要对数据进行操作.其实 我们可以发现,很多软件和系统最终都是对于数据库中数据的处理.之前在CS的学习过程中我们接触到了很多 ...
- 一个vbs文件将指定文件夹下的文件名输出到指定文件夹下
'on error resume NextConst MY_COMPUTER=&H11& Const WINDOW_HANDLE=0 Const OPTIONS=0 '设置我的电脑为根 ...
- C#获取文件夹下的所有文件的方法
目录 #基础知识 #只获取目录下一级的文件夹与文件 # 递归地输出当前运行程序所在的磁盘下的所有文件名和子目录名 正文 #基础知识 1.获得当前运行程序的路径 1 string rootPath ...
- JAVA 遍历文件夹下的所有文件
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
- Android:创建文件或文件夹以及获取sd卡根目录
目录结构: 功能,可以根据录入的目录或者文件夹生成相应的文件或者文件夹 首先需要添加一个权限: <uses-permission android:name="android.permi ...
- JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
随机推荐
- 关于ax+by=c的解x,y的min(|x|+|y|)值问题
首先我们移动一下项,并强行让a>b. 然后我们可以画出这样一个图像 我们发现,在线段l与x轴交点处的下方,x,y的绝度值是递增的,所以我们不考虑那个最小点在下端. 之后我们发现在点的上端,因为斜 ...
- a标签的link、visited、hover、active的顺序
a标签的link.visited.hover.active是有一定顺序的,以下是我一直在用的一个顺序,能正确显示四个颜色,我也不知道有没有其他的顺序能正确显示,如果你没办法判断哪个是对的,那就先用这个 ...
- UINavigationController使用详解
UINavigationController使用详解 有一阵子没有写随笔,感觉有点儿手生.一个多月以后终于又一次坐下来静下心写随笔,记录自己的学习笔记,也希望能够帮到大家. 废话少说回到正题,UINa ...
- MyEclipse中创建maven工程
转载:http://blog.sina.com.cn/s/blog_4f925fc30102epdv.html 先要在MyEclipse中对Maven进行设置: 到此Maven对MyEclip ...
- C++遍历目录,并把目录里超过7天的文件删除(跨平台windows&linux)
C++遍历目录,并把目录里超过7天的文件删除,适用于项目里删除过期的日志,或者视频文件. 在windows和linux下测试通过. windows测试结果: linux测试结果: 源码: #inclu ...
- java中dao层和service层的区别是什么?
首先解释面上意思,service是业务层,dao是数据访问层.呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用 ...
- Qt: 内建对话框(各种对话框都有了,且用到了qobject_cast解析sender的技术)
#include "BuiltinDialog.h" #include <QtGui/QTextEdit> #include <QtGui/QPushButton ...
- 解决 IntelliJ 乱码问题
原文:解决 IntelliJ 乱码问题 汉字符在IntelliJ的控制台输出乱码.编译器在编译的时候,把汉字符编译成非UTF-8而引起乱码.我是在做Jsoup解析的时候出现的错误,其实归根结底确实编译 ...
- 为PHP开发者准备的12个调试工具
PHP是在实践中发展迅速并被最多使用的脚本语言:包含了诸如详细的文档.庞大的社区.无数可使用的脚本及支持框架等许多特性.PHP提供的这些特性使得它比Python或Ruby等脚本语言更容易上手. 为构建 ...
- allegro添加多个过孔
place--Via arrays matrix: [数] 矩阵:模型:[生物][地质] 基质:母体:子宫:[地质] 脉石 boundary:边界:范围:分界线 unplaced : adj. 未受到 ...