VBScript Sample:遍历文件夹并获取XML文件中指定内容
2013-06-25 11:46
489 查看
案例:
我有一个文件夹,里面有很多子文件夹,每个子文件夹中都存在一个相同名字的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[code]
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[/code]
相关文章推荐
- Python脚本- 递归遍历文件夹,获取指定扩展名文件,修改文件内容
- 遍历指定文件夹下所有的xml文件并动态生成HTML页面
- 遍历指定文件夹下所有的xml文件并动态生成HTML页面!
- xml-使用dom去遍历xml文件和获取指定节点信息
- python 遍历指定文件夹下的所有文件内容
- python遍历文件夹获取指定格式的文件
- 遍历指定文件夹下所有的xml文件并动态生成HTML页面!
- Atitit 遍历文件夹目录解决方案与规范 attilax总结 1. 规范 2 1.1. 注意的不要同时改变文件夹内容,增删文件。这样获取到的目录list不会变化 2 1.2. 主义中文名称文件读写
- 使用DMO遍历xml文件(将xml文件中要获取的内容存到ArrayList集合中再取出来)(DMO解析)
- 遍历指定文件夹下所有的xml文件并动态生成HTML页面!
- 遍历指定文件夹下所有的xml文件并动态生成HTML页面!
- 遍历指定文件夹下所有的xml文件并动态生成HTML页面
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- [置顶] win32命令行小程序获取指定文件夹或者目录下面的所有文件大小,文件数量,目录数量
- php获取文件夹中所有lrc格式文件,提取lrc文件中内容
- Delphi 计算指定目录下所有文件的大小(遍历文件夹所有文件及目录)
- java遍历文件夹并复制文件到指定目录
- Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容
- C++遍历指定文件夹中的所有文件
- linux文件操作—获取文本中指定行的内容