投稿日 | : 2004/07/19(Mon) 23:11 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^3: ListViewのNodeをXMLより取得したいのですが |
> ご教授いただいたXMLファイルで現状のロジックを流すと以下の結果となりました。
> 階層は思い通りになっていますが、ノードのテキストがすべて「node」となっていました。
要素ノード中の属性ノードを取得するには、
XMLNode.attributes.getNamedItem("text").nodeValue
のような構文を使えます。
また、XPath式を御存知なら、
XMLNode.selectSingleNode(@text").nodeValue
のように、selectSingleNode/SelectNodesメソッドを使うのも便利かと。
> 一応現状のソースを載せて置きます。
例えば、こんな感じで。
Private Sub Form_Load()
With New DOMDocument
.async = False
If .loadXML(Text1.Text) Then
FillNode TreeView1.Nodes.Add(), .documentElement
End If
End With
End Sub
Private Sub FillNode(ByVal TreeNode As Node, ByVal XMLNode As IXMLDOMNode)
TreeNode.Text = XMLNode.selectSingleNode("@text").nodeValue
TreeNode.Expanded = True
Dim Child As IXMLDOMNode
For Each Child In XMLNode.childNodes
FillNode TreeView1.Nodes.Add(TreeNode, tvwChild), Child
Next
End Sub
これを応用すれば、テキスト以外にも「ノードの画像」「ノードを開いておくか閉じておくか」
「ノードの文字色」といった情報も、XMLデータに含めておくことができるかと。