
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の要素の内容の中に要素
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
同じ値がある時にエラーを出したい
-
昔Winnyってありましたけど、あ...
-
乱雑なCSSはどうにかしたい!!
-
VBA 『Range』 『Cells』 の関係
-
VB6.0ツリービューについて
-
ノード数とは?
-
特殊記号が勝手にエスケープさ...
-
XMLで要素が記述された順番に意...
-
JSPでXMLのデータ表示が...
-
xmlから\\t文字を取得する
-
線形リストに挿入するプログラム
-
DOSコマンドラインからxmlファ...
-
replaceChildメソッドについて
-
プログラミングC言語について次...
-
C#初心者です。HtmlAgilityPack...
-
XMLで特殊文字を扱うにはどうし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
VBAでXMLを出力するプログラム...
-
XMLファイル内のデータ(値)を変...
-
VBAでXML文書のある特定タグ以...
-
VB6でXMLを作成しているのです...
-
XMLの要素の内容の中に要素
-
C#でXMLファイルの情報にアクセ...
-
xmlでコンテンツを複数表示させ...
-
LoadCML
-
C# もしくはVB
-
指定した属性値を持つ要素に追...
-
XMLをエクセルに取り込むマクロ...
-
XMLDocumentでスキーマを無視し...
-
XPATHについての質問です。以下...
-
XMLをXSLTで変換するとき、XML...
-
C# GetElementsByTagNameで取得...
-
C#でXMLの読み取り書き取りにつ...
-
XML文のid属性とclass属性について
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
おすすめ情報