dポイントプレゼントキャンペーン実施中!

VisualBasic6.0にて、XMLを作成するプログラムを作っています。
XMLの作成、編集はMSXMLを使用しており、編集保存はできたのですが、下記のような要素の出力の仕方がわかりません。

<Node1>
 あいうえお
 <Node1-1>abcde</Node1-1>
 かきくけこ
</Node1>
このように要素の文字列の途中に子要素を作成したいです。

「Node1」要素に、子要素「Node1-1」を追加するサンプルです。
Cドライブ直下に以下の内容のXMLファイル「test.xml」を作成
<?xml version="1.0" encoding="shift_jis"?>
<Node1>
</Node1>

VB6にて、参照設定に「Microsoft XML V6.0」を追加し以下のコードを作成。
Private Sub Command1_Click()
Dim xDoc As MSXML2.DOMDocument
Set xDoc = New MSXML2.DOMDocument
Dim node As IXMLDOMNodeList
Dim Addnode As IXMLDOMNode
Dim obj As IXMLDOMNode

If xDoc.Load("C:\test.xml") Then
Set node = xDoc.documentElement.selectNodes("/Node1")
For Each obj In node
Set Addnode = obj.appendChild(xDoc.createNode(NODE_ELEMENT, "Node1-1", ""))
Addnode.Text = "abcde"
Next
xDoc.save ("C:\test.xml")
End If
Set xDoc = Nothing
End Sub

A 回答 (1件)

Option Explicit



Sub Main()
Dim xDoc As MSXML2.DOMDocument
Set xDoc = New MSXML2.DOMDocument

Dim root As MSXML2.IXMLDOMElement
Set root = xDoc.createElement("Node1")
root.Text = "あいうえお"

'二文字目と3文字目の間に要素を入れる

Dim textnode As MSXML2.IXMLDOMText
Set textnode = root.selectSingleNode("text()")

'こんなメソッドあるんだね。
textnode.splitText (2)

Dim current As MSXML2.IXMLDOMElement
Set current = xDoc.createElement("Node1-1")
current.Text = "abcde"

'DOM Core に insertAfterは無い。意外にも。
root.insertBefore current, textnode.nextSibling

'ええ、ルート要素追加し忘れてもSaveメソッドでエラーで無いんです。辛いです。
'VB.NETでXMLSerializerとかの時は例外が投げられる。
xDoc.appendChild root
'インデントは自分で調べてね。
xDoc.Save ("C:\test.xml")

End Sub
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
なかなか資料が少なく苦労しておりました。

お教え頂いたコードでうまくいきました。
コードの意味もしっかり調べて何をやってるか理解しようと思います。
本当にありがとうございました。

お礼日時:2009/03/19 19:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!