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
No.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
早速の回答ありがとうございます。
なかなか資料が少なく苦労しておりました。
お教え頂いたコードでうまくいきました。
コードの意味もしっかり調べて何をやってるか理解しようと思います。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでXMLを出力するプログラム...
-
XPathで途中に名前空間が設定さ...
-
XMLDocumentでスキーマを無視し...
-
VBAでXML文書のある特定タグ以...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
VB6.0でDOMを使用して...
-
Excel-VBAでXMLの複数ノードの...
-
バッチファイルでテキストファ...
-
XMLで要素が記述された順番に意...
-
VB6でXMLを処理するには
-
VBSでxmlの値を書き換えたい
-
UTF-8でエンコーディングとはど...
-
SNMP リンクダウンとノードダ...
-
xmlファイルが上手にHTMLに変換...
-
あるノードリストに、特定の名...
-
MSXMLを使ってノードを削除した...
-
MFCでのタブコントロールに...
-
xmlのテキストにリンクを張りた...
-
GoogleマップでKMLが読み込めない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
VBAでXMLを出力するプログラム...
-
XMLファイル内のデータ(値)を変...
-
VB6でXMLを作成しているのです...
-
VBAでXML文書のある特定タグ以...
-
XMLDocumentでスキーマを無視し...
-
WebBrowser1.Document.Body.Inn...
-
XMLの要素の内容の中に要素
-
エクセルVBA ウェブ上のボタ...
-
XmlをDetaSetに読み込んだ場合...
-
LoadCML
-
C#でXMLファイルの情報にアクセ...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
昔Winnyってありましたけど、あ...
-
UTF-8でエンコーディングとはど...
-
バッチファイルでテキストファ...
-
ルート要素ノードが2個ある場合?
-
Excel-VBAでXMLの複数ノードの...
おすすめ情報