在 XML 文件中搜索属性值
Search attribute value in XML file
我需要在包含唯一字符串的 XML 文件中搜索字符串
<CSVName Value="standard.csv" />
此值在 "standard.csv" 和 "non-standard.csv" 之间变化。
我正在使用 VBScript 搜索 "standard.csv" 或 "non-standard.csv"。如果它匹配 "standard.csv" 它会回显我 "This is standard",如果它匹配 "non-standard.csv" 它会回显我 "This is non-stanadard".
这是我点击按钮时此功能的 HTA 的一部分,我不知道如何制作用于匹配 "A" 或 "B" 的 reg exp 模式,然后相应地回显每个。
<html>
<head>
<title></title>
<HTA:APPLICATION
APPLICATIONNAME=""
ID=""
VERSION="1.0"/>
</head>
<script language="VBScript">
ub RUNCURRENTMODE
Const ForReading = 1
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = (?:"standard.csv"|"non-standard.csv")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\aaa\settings.xml", ForReading)
strSearchString = objFile.ReadAll
objFile.Close
If
.
.
.
End If
End Sub
</script>
<body bgcolor="buttonface">
<center>
<p><font face="verdana" color="red">CSV MODE SWITCH</font></p>
YOU ARE CURRENTLY IN STANDARD CSV MODE <p>
<input id=runbutton class="button" type="button" value="CURRENT MODE" name="db_button" onClick="RUCURRENTMODE" style="width: 170px"><p>
</center>
</body>
</html>
要回答眼前的问题,Pattern
属性 需要一个字符串,因此您必须更改它:
objRegEx.Pattern = (?:"standard.csv"|"non-standard.csv")
进入这个:
objRegEx.Pattern = "(?:standard\.csv|non-standard\.csv)"
您甚至可以将表达式简化为:
objRegEx.Pattern = "(?:non-)?standard\.csv"
但是,显然你在那里有一个 XML 文件,所以你首先要 shouldn't be using regular expressions for this。使用实际的 XML 解析器提取信息:
Set xml = CreateObject("Msxml2.DOMDocument.6.0")
xml.async = False
xml.load "C:\aaa\settings.xml"
If xml.ParseError Then
MsgBox xml.ParseError.Reason
self.Close() 'or perhaps "Exit Sub"
End If
For Each n In xml.SelectNodes("//CSVName")
Select Case n.Attributes.GetNamedItem("Value").Text
Case "standard.csv" : MsgBox "This is standard."
Case "non-standard.csv" : MsgBox "This is non-standard."
Case Else : MsgBox "Unexpected value."
End Select
Next
我需要在包含唯一字符串的 XML 文件中搜索字符串
<CSVName Value="standard.csv" />
此值在 "standard.csv" 和 "non-standard.csv" 之间变化。
我正在使用 VBScript 搜索 "standard.csv" 或 "non-standard.csv"。如果它匹配 "standard.csv" 它会回显我 "This is standard",如果它匹配 "non-standard.csv" 它会回显我 "This is non-stanadard".
这是我点击按钮时此功能的 HTA 的一部分,我不知道如何制作用于匹配 "A" 或 "B" 的 reg exp 模式,然后相应地回显每个。
<html>
<head>
<title></title>
<HTA:APPLICATION
APPLICATIONNAME=""
ID=""
VERSION="1.0"/>
</head>
<script language="VBScript">
ub RUNCURRENTMODE
Const ForReading = 1
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = (?:"standard.csv"|"non-standard.csv")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\aaa\settings.xml", ForReading)
strSearchString = objFile.ReadAll
objFile.Close
If
.
.
.
End If
End Sub
</script>
<body bgcolor="buttonface">
<center>
<p><font face="verdana" color="red">CSV MODE SWITCH</font></p>
YOU ARE CURRENTLY IN STANDARD CSV MODE <p>
<input id=runbutton class="button" type="button" value="CURRENT MODE" name="db_button" onClick="RUCURRENTMODE" style="width: 170px"><p>
</center>
</body>
</html>
要回答眼前的问题,Pattern
属性 需要一个字符串,因此您必须更改它:
objRegEx.Pattern = (?:"standard.csv"|"non-standard.csv")
进入这个:
objRegEx.Pattern = "(?:standard\.csv|non-standard\.csv)"
您甚至可以将表达式简化为:
objRegEx.Pattern = "(?:non-)?standard\.csv"
但是,显然你在那里有一个 XML 文件,所以你首先要 shouldn't be using regular expressions for this。使用实际的 XML 解析器提取信息:
Set xml = CreateObject("Msxml2.DOMDocument.6.0")
xml.async = False
xml.load "C:\aaa\settings.xml"
If xml.ParseError Then
MsgBox xml.ParseError.Reason
self.Close() 'or perhaps "Exit Sub"
End If
For Each n In xml.SelectNodes("//CSVName")
Select Case n.Attributes.GetNamedItem("Value").Text
Case "standard.csv" : MsgBox "This is standard."
Case "non-standard.csv" : MsgBox "This is non-standard."
Case Else : MsgBox "Unexpected value."
End Select
Next