1

我在以下代码行中使用 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)。是否可以?请提出一些答案。提前致谢。

4

1 回答 1

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( String1 ,*findString*, replaceString ) 此函数搜索String1并将任何findString替换为replaceString。在 w3org 网站上,您可以获得更多信息。检查链接:Xpath - w3Org


小心点:

因为您//在此 Xpath中使用,所以xmlDoc.SelectNodes("//tag1[@Name='" & strname & "']")您正在查询tag1里面的所有元素ParentXMLDoc。不仅仅是在xmlDoc.

于 2012-10-05T13:33:30.460 回答