
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を見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6でXMLを作成しているのです...
-
XMLの要素の内容の中に要素
-
CPUの考え方を教えてください ...
-
SNMP リンクダウンとノードダ...
-
バッチファイルでテキストファ...
-
Windowsで見かけるxmlファイル...
-
ノードとは
-
このエラー、何とかなりません...
-
xmlファイルが上手にHTMLに変換...
-
タグの有無の判定
-
u_shortなどの省略した宣言につ...
-
XSLTにてタグ名を取得する方法
-
XPathでできるか確認
-
昔Winnyってありましたけど、あ...
-
ルート要素ノードが2個ある場合?
-
東芝のDynabookなのですがアン...
-
ブレークポイントで止らない
-
同じタグ名の項目取得
-
ノード数とは?
-
XMLとXSLTでリンクを張る方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
XMLファイル内のデータ(値)を変...
-
VBAでXMLを出力するプログラム...
-
VBAでXML文書のある特定タグ以...
-
VB6でXMLを作成しているのです...
-
エクセルVBA ウェブ上のボタ...
-
C#でXMLファイルの情報にアクセ...
-
XMLをXSLTで変換するとき、XML...
-
XMLの要素の内容の中に要素
-
XML文のid属性とclass属性について
-
C# GetElementsByTagNameで取得...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
XMLで要素が記述された順番に意...
-
Excel-VBAでXMLの複数ノードの...
-
複数のマックPCによる数値計算...
-
XML、XSLTの適応エラー(IEから...
-
バッチファイルでテキストファ...
おすすめ情報