Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

xmlファイルを読み込んでXPathを使う

ツール→参照制約→Microsoft XML, v?.0を選択して追加(http://www.microsoft.com/downloads/details.aspx?FamilyID=993c0bcf-3bcf-4009-be21-27e85e1857b1&DisplayLang=ja

    Dim xDoc As MSXML2.DOMDocument
    ' DOM Parserオブジェクトを生成する
    Set xDoc = CreateObject("Microsoft.XMLDOM")
    Call xDoc.setProperty("SelectionLanguage", "XPath")
    
    ' ファイルが完全に読み込まれるまで、パーサーはコードにコントロールを返さない
    xDoc.async = False
    xDoc.validateOnParse = False

    xDoc.Load("xmlファイルのフルパス")

    Dim root As IXMLDOMElement
    Set root = xDoc.documentElement
            
    Dim model As IXMLDOMNode
    Call xDoc.setProperty("SelectionNamespaces", "xmlns:uml=""http://www.eclipse.org/uml2/1.0.0/UML""")
    model = root.selectSingleNode("//uml:Model")
    
    Dim ownedMembers As IXMLDOMNodeList
    Call xDoc.setProperty("SelectionNamespaces", "xmlns:xmi=""http://www.omg.org/XMI""")
    ' ドキュメント全体から「xmi:type」属性が「uml:Class」のownedMember要素をすべて取得する
    Set ownedMembers = root.selectNodes("//ownedMember[@xmi:type = ""uml:Class""]")