检查值中带有撇号的节点
Checking a node with an apostrophe in the value
我有一组代码可以搜索用户在组合框中选择的特定身高的人,然后删除列表中所有不匹配的主题。组合框的值如下所示:5'0-5'5
。我的问题是 5'0-5'5
中的撇号会引发错误。这是我的代码
If ComboBox5.Value <> "" Then
i = 0
Do While i <= ListBox26.ListCount - 1
Set CheckHeight = objDom.SelectSingleNode("//IDNum/LastName[@LName = '" _
& LastName.Text & "']/FirstName[@FName='" & FirstName.Text _
& "']/DateOfBirth[@DOB='" & Dob.Text & "']/Height[.='" _
& ComboBox5.Value & "']")
If CheckHeight Is Nothing Then
ListBox26.RemoveItem (i)
Else
i = i + 1
End If
Loop
XML 看起来像这样:
<LastName LName="Rodriguez Jesus Luis">
<FirstName FName="Armondo">
<DateOfBirth DOB="7/10/1975">
<Hair>Black</Hair>
<Eyes>Brown</Eyes>
<Weight>150 - 175 lbs</Weight>
<Height>5'6 - 5'9</Height>
</DateOfBirth>
</FirstName>
</LastName>
我试过用两个“''”替换一个撇号“'”,试过Chr(39),试过'
,但仍然出错。
如果我使用 getElementsByTagName
并编写更多代码来比较和删除,我可以让它工作,但我希望使用上面的代码,因为它适用于我的其他所有其他领域使用。
我得到的错误是:
Expected token ']' found 'NUMBER'.
//IDNum/LastName[@LName = 'Rodriguez Jesus Luis']/FirstName[@FName='Armondo']/DateOfBirth[@DOB='7/10/1975']/Height[.='5'-->0<-- - 5'3']
在可能包含单引号的字符串周围使用双引号。在 VBScript 中,字符串中的嵌套双引号通过加倍转义:
Set CheckHeight = objDom.SelectSingleNode("//IDNum/LastName[@LName = '" & _
LastName.Text & "']/FirstName[@FName='" & FirstName.Text & _
"']/DateOfBirth[@DOB='" & Dob.Text & _
"']/Height[.=""" & ComboBox5.Value & """]")
^^ ^^
附带说明一下,您的数据格式严重混乱。您的整个层次结构应该是同一节点的属性:
<Person LastName="Rodriguez Jesus Luis"
FirstName="Armondo"
DateOfBirth="7/10/1975"
Hair="Black"
Eyes="Brown"
Weight="150 - 175 lbs"
Height="5'6 - 5'9"
/>
我有一组代码可以搜索用户在组合框中选择的特定身高的人,然后删除列表中所有不匹配的主题。组合框的值如下所示:5'0-5'5
。我的问题是 5'0-5'5
中的撇号会引发错误。这是我的代码
If ComboBox5.Value <> "" Then
i = 0
Do While i <= ListBox26.ListCount - 1
Set CheckHeight = objDom.SelectSingleNode("//IDNum/LastName[@LName = '" _
& LastName.Text & "']/FirstName[@FName='" & FirstName.Text _
& "']/DateOfBirth[@DOB='" & Dob.Text & "']/Height[.='" _
& ComboBox5.Value & "']")
If CheckHeight Is Nothing Then
ListBox26.RemoveItem (i)
Else
i = i + 1
End If
Loop
XML 看起来像这样:
<LastName LName="Rodriguez Jesus Luis">
<FirstName FName="Armondo">
<DateOfBirth DOB="7/10/1975">
<Hair>Black</Hair>
<Eyes>Brown</Eyes>
<Weight>150 - 175 lbs</Weight>
<Height>5'6 - 5'9</Height>
</DateOfBirth>
</FirstName>
</LastName>
我试过用两个“''”替换一个撇号“'”,试过Chr(39),试过'
,但仍然出错。
如果我使用 getElementsByTagName
并编写更多代码来比较和删除,我可以让它工作,但我希望使用上面的代码,因为它适用于我的其他所有其他领域使用。
我得到的错误是:
Expected token ']' found 'NUMBER'.
//IDNum/LastName[@LName = 'Rodriguez Jesus Luis']/FirstName[@FName='Armondo']/DateOfBirth[@DOB='7/10/1975']/Height[.='5'-->0<-- - 5'3']
在可能包含单引号的字符串周围使用双引号。在 VBScript 中,字符串中的嵌套双引号通过加倍转义:
Set CheckHeight = objDom.SelectSingleNode("//IDNum/LastName[@LName = '" & _
LastName.Text & "']/FirstName[@FName='" & FirstName.Text & _
"']/DateOfBirth[@DOB='" & Dob.Text & _
"']/Height[.=""" & ComboBox5.Value & """]")
^^ ^^
附带说明一下,您的数据格式严重混乱。您的整个层次结构应该是同一节点的属性:
<Person LastName="Rodriguez Jesus Luis"
FirstName="Armondo"
DateOfBirth="7/10/1975"
Hair="Black"
Eyes="Brown"
Weight="150 - 175 lbs"
Height="5'6 - 5'9"
/>