Tips - XML

【TOP】

DOM:selectSingleNodeメソッド
selectSingleNodeメソッドはXML文書から任意の1ノード(IXMLDOMNode)を取得するメソッドです。
引数にはXPathで検索条件を指定します。次のようなXML文書を考えてみます。
<!-- lcid.xml --> <?xml version="1.0" encoding="utf-8"?> <LocaleId> <language cd="ja"> <LCID>1041</LCID> <langName>日本語</langName> </language> <language cd="en-us"> <LCID>1033</LCID> <langName>英語 (U.S.)</langName> </language> <language cd="en-gb"> <LCID>2057</LCID> <langName>英語 (U.K.)</langName> </language> <language cd="fr"> <LCID>1036</LCID> <langName>フランス語 (フランス)</langName> </language> <language cd="de"> <LCID>1031</LCID> <langName>ドイツ語 (ドイツ)</langName> </language> <language cd="zh-cn"> <LCID>2052</LCID> <langName>中国語 (中華人民共和国)</langName> </language> <language cd="ko"> <LCID>1042</LCID> <langName>韓国語</langName> </language> </LocaleId>
まず、言語コード(language要素のcd属性)が「de」であるlanguage要素を取得して、ロケールID(LCID)と言語名(langName)を表示してみます。
Dim DOM, docRoot, node Set DOM = WScript.CreateObject("Microsoft.XMLDOM") DOM.async = True DOM.load("data\lcid.xml") Set docRoot = DOM.documentElement '言語コードが「de」であるlanguage要素を取得して、LCIDとlangNameを表示 Set node = docRoot.selectSingleNode("/LocaleId/language[@cd='de']") WScript.Echo "LCID=" & node.childNodes(0).firstChild.nodeValue '① WSCript.Echo "LCID=" & node.childNodes.item(0).firstChild.nodeValue '② WScript.Echo "言語名=" & node.childNodes(1).firstChild.nodeValue Set node = Nothing Set docRoot = Nothing Set DOM = Nothing
上記①と②は同じ意味です。結果は次のようになります。
LCID=1031 LCID=1031 言語名=ドイツ語 (ドイツ)
次は、ロケールIDが「1036」である言語名を取得してみます。
Dim DOM, docRoot, node Set DOM = WScript.CreateObject("Microsoft.XMLDOM") DOM.async = True DOM.load("data\lcid.xml") Set docRoot = DOM.documentElement 'LCIDが「1036」であるlangName要素を取得して、その値を表示 Set node = docRoot.selectSingleNode("/LocaleId/language[LCID='1036']/langName") WScript.Echo "言語名=" & node.firstChild.nodeValue Set node = Nothing Set docRoot = Nothing Set DOM = Nothing
結果は次のようになります。
言語名=フランス語 (フランス)
今度は、ロケールIDが「1041」である言語コードを取得してみます。
Dim DOM, docRoot, node Set DOM = WScript.CreateObject("Microsoft.XMLDOM") DOM.async = True DOM.load("data\lcid.xml") Set docRoot = DOM.documentElement 'LCIDが「1041」であるlanguage要素を取得して、そのcd属性の値を表示 Set node = docRoot.selectSingleNode("/LocaleId/language[LCID='1041']") WScript.Echo "言語コード=" & node.getAttribute("cd") WScript.Echo "言語コード=" & node.attributes(0).firstChild.nodeValue WScript.Echo "言語コード=" & node.attributes.item(0).firstChild.nodeValue WScript.Echo "言語コード=" & node.attributes.getNamedItem("cd").nodeValue Set node = Nothing Set docRoot = Nothing Set DOM = Nothing
上記4つの結果は次のように全て同じになります。
言語コード=ja 言語コード=ja 言語コード=ja 言語コード=ja
【戻る】