我在HTML中有以下代码,我从中检索标签值。
<div class="span4">
<div>
<label for="Game_type">Portal Games</label>
XXX
</div>
</div>
检索价值&#34;门户网站游戏&#34;我正在使用以下功能:
Function ExtractPaymentDetailesByName()
var1 = "Game_type"
Dim1 = "span4"
DimNumber = "0"
balx = "<div>\s*<label for=""" & var1 & """>(.*)</label>\s*(.*)\s*</div>"
strCont = IE.Document.getElementsByClassName(Dim1)(DimNumber).innerHTML
With CreateObject("VBScript.RegExp")
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = balx
Set objMatches = .Execute(strCont)
For Each objMatch In objMatches
FinalValue = objMatch.SubMatches(0)
Next
End With
End Function
一切都很迷人。但是,如果初始HTML代码内部有ID并且是嵌套的,我将面临真正的问题。
<div class="row-fluid" id="debet-credit-section">
<div class="panel span6" id="debitPanelPrinterStyle">
<h3>Debit information</h3>
<div class="panel-content horizontal-align-large" id="DebitPanel">
<div>
<label for="Payment_DebitAmount">Debited amount</label>
USD
979,63
</div>
</div>
</div>
</div>
我正在尝试检索价值&#34;借记金额&#34;我正在使用上述所有内容,仅使用GetElemntById:
Div1 = "DebitPanel"
strCont = IE.Document.getElementById(Div1).innerHTML
如果我使用FinalValue制作MsgBox - 它会给我空白的MsgBox。 我注意到如果嵌套的DIVS在ID字段中具有完全独特的措辞,那么我的代码就可以工作了。例如,在我的代码中 - 它是debitPanelPrinterStyle和DebitPanel,没有任何作用,但如果值如下 - 一切正常。
<div class="panel span6" id="debitPrinterStyle">
<div class="panel-content horizontal-align-large" id="DebitPanel">
我正在通过Excel进行编码。
更新
似乎我发现了问题所在:
balx = "<div>\s*<label for=""" & var1 & """>(.*)</label>\s*(.*)\s*</div>"
定义patern值的代码仅在&#34;标签&#34;之后仅限于1行。 例如,代码如下:|
<div>
<label for="Game_type">Portal Games</label>
XXX
</div>
但是如果你在XXX之后添加另一行 - patern将无效,并且最后将返回空的MsgBox。
<div>
<label for="Payment_DebitAmount">Debited amount</label>
XXX
979,63
</div>
我试图重组帕特,但不是很成功。最后一个选项是:
balx = "<div>\s*<label for=""" & var1 & """>(.*)</label>\s*([\s\S])*\s*</div>"
它给了我价值&#34;借记金额&#34;,考虑到我要求第一次子匹配:
FinalValue = objMatch.SubMatches(0)
调用子匹配(1) - 将导致空框。
有人能解释一下这些案件的正确理由是什么吗?