
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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコードを教えてください
-
Excel VBA セルの値がおかしいです
-
VBA 入力箇所指定方法
-
【ExcelVBA】5万行以上のデー...
-
Vba Array関数について教えてく...
-
【マクロ】開いているブックの...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
【ExcelVBA】値を変更しながら...
-
VBA セル間のリンク修正につい...
-
【ExcelVBA】dictionaryの重複...
-
[Excel VBA]特定の条件で文字を...
-
【ExcelVBA】値を変更しながら...
-
複数のExcelファイルをマージす...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
vb.net(vs2022)のtextboxのデザ...
-
VBAの「To」という語句について
-
[VB.net] ボタン(Flat)のEnable...
-
マクロの記録を使用したマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
XML文のid属性とclass属性について
-
XMLファイル内のデータ(値)を変...
-
VBAでXMLを出力するプログラム...
-
ホームページ作成 アンカーと...
-
VB6でXMLを作成しているのです...
-
VBSでのDOM操作について
-
VBAでXML文書のある特定タグ以...
-
エクセルVBA ウェブ上のボタ...
-
XMLDocumentでスキーマを無視し...
-
CPUの考え方を教えてください ...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
XML、XSLTの適応エラー(IEから...
-
C#でTreeViewのCheckBoxのサイ...
-
xmlファイルが上手にHTMLに変換...
-
昔Winnyってありましたけど、あ...
-
バッチファイルでテキストファ...
おすすめ情報