VBScriptでMSXML2.DOMDocumentを使用してXMLデータを参照するプログラムを作成しています。
この処理の中でselectNodesを使用して属性(sts)の値が"0"のノードを取得していますが、その結果件数の取得方法について悩んでいます。
XMLデータ
<?xml version="1.0" encoding="Shift_JIS" standalone="no"?> <doc> <file sts="1" mode="auto"><filename><![CDATA[C:\Work\A.EXE]]></filename></file> <file sts="0" mode="auto"><filename><![CDATA[C:\Work\B.EXE]]></filename></file> <file sts="0" mode="auto"><filename><![CDATA[C:\Work\C.EXE]]></filename></file> </doc>
VBS
Dim objDOM Dim nodDoc, nodFiles, nodFile Dim iCnt 'DOM定義 Set objDOM = WScript.CreateObject("MSXML2.DOMDocument") objDOM.setProperty "SelectionLanguage", "XPath" 'XMLファイルオープン If objDOM.load("C:\Work\data.xml") = False Then 'XMLファイルオープンエラー MsgBox "XMLファイルが取得できません。", vbCritical WScript.Quit End If 'docノード取得 Set nodDoc = objDOM.documentElement.selectSingleNode("/doc") 'ノード取得 Set nodFiles = nodDoc.selectNodes("file[@sts=""0""]") If nodFiles Is Nothing Then MsgBox "not found" Else 'MsgBox "Count:" & nodFiles.Count For Each nodFile In nodFiles iCnt = iCnt + 1 Next MsgBox "Count:" & iCnt End If MsgBox "Fin"
上記コードで対象ノードの取得までは期待する動作となっています。
結果件数の取得について、現状では結果をループしてカウントをとることで取得できてはいるものの、スマートではない気がしています。
もともとはselectNodesの戻り値であるxmlNodeListのCountプロパティから取得できるものと思っていたのですが、
「オブジェクトでサポートされていないプロパティまたはメソッドです:'Count'」と表示されエラーになってしまいます。
(コメントアウトしているMsgBox部分)
selectNodes結果の件数取得について、よい方法や体験談等あればご教授頂きたく、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。