我在下面的代码行中使用了UCase - > // xmlTag1doc有一个xml
Dim xmlTag1doc As IXMLDOMElement,Dim ParentDoc As MSXML2.DOMDocument
set xmlTag1Doc = ParentDoc.DocumentElement.SelectSingleNode("//Root//XP")
if(xmlTag1Doc .SelectNodes("//tag1[@ID = 1 and @Name='" & strname & "']").Length >0)
在这里,我必须使用“UCase”来检查我的代码行中的UCase(@Name)= UCase(strname)。 可能吗? 请提出一些答案。 提前谢谢。
答案 0 :(得分:1)
使用以下
if(xmldoc.SelectNodes("//tag1[translate(@Name,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ') = '" & strings.UCase(strname) & "']").Length >0)
修改强>
在这种情况下,维度ParantXMLDoc as MSMXL2.DOMDocumentXX
。 (其中 XX 是任何版本等于或高于40)。由于xmlDoc是ParantXMLDoc中的一个节点,因此它将与ParentXMLDoc具有相同类型的DOM版本。
为什么选择DOMDocument40或Highet? 因为4.0版是第一个完全支持XPath 1.0的DOM版本。在该版本之前,不支持每个Xpath 1.0功能。例如Translate()
<强>翻译(字符串1 ,* FINDSTRING *, replaceString )强> 此函数搜索 String1 并将任何 findString 替换为 replaceString 。 在w3org网站上,您可以获得更多信息。检查链接:Xpath - w3Org
小心点:
由于您在此Xpath //
中使用xmlDoc.SelectNodes("//tag1[@Name='" & strname & "']")
,因此您正在查询tag1
内的所有ParentXMLDoc
元素。不只是xmlDoc
中预先选定的元素内部。