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 以上なのか? バージョン 4.0 は、XPath 1.0 を完全にサポートする最初の DOM バージョンであるためです。そのバージョンより前は、すべての Xpath 1.0 関数がサポートされていませんでした。たとえば、Translate()

Translate( String1 ,*findString*, replaceString ) この関数は String1 を検索し、findStringreplaceStringに置き換えます。w3org サイトで詳細情報を入手できます。リンクを確認してください: Xpath - w3Org


注意してください:

//この Xpath で使用しているため、 内のxmlDoc.SelectNodes("//tag1[@Name='" & strname & "']")すべてtag1の要素を照会していますParentXMLDoc。で事前に選択された要素の中だけではありませんxmlDoc

于 2012-10-05T13:33:30.460 に答える