VB6にてcreateNodeを使ってXMLを作成しようとしています。
シンプルなXMLは作成できたのですがAttributeを持ったNodeの追加方法が分かりません。
下記のようなXMLファイルを作成しようとしています。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<setting name="Color_Unknown_On" serializeAs="String">
<value>True</value>
</setting>
</userSettings>
</configuration>
ご教授お願いいたします。
No.1ベストアンサー
- 回答日時:
'VBAでのみテスト
'参照設定でMicrosoft XML,v6.0を追加してある。
Option Explicit
Sub createXML()
Dim document As MSXML2.DOMDocument60
Dim configuration As MSXML2.IXMLDOMElement
Dim userSettings As MSXML2.IXMLDOMElement
Dim setting As MSXML2.IXMLDOMElement
Dim Value As MSXML2.IXMLDOMElement
Dim nsURI As String
'ASP.NET等のconfiguration要素は
'http://schemas.microsoft.com/.NetConfiguration/v …
'だが,質問文に書かれていないので以下の記述とは違うのだろう
'nsURI = "http://schemas.microsoft.com/.NetConfiguration/v …
'ちなみにcreateElementNSメソッドは存在しないため,名前空間に属する要素・属性等はcreateNodeで生成しないとダメっぽい。
'空白文字類の個数等は質問文と一致させない。
nsURI = ""
Set document = New MSXML2.DOMDocument60
Set configuration = document.createNode(MSXML2.NODE_ELEMENT, "Configuration", nsURI)
Set userSettings = document.createNode(MSXML2.NODE_ELEMENT, "userSettings", nsURI)
Set setting = document.createNode(MSXML2.NODE_ELEMENT, "setting", nsURI)
'括弧をつけてはダメらしい。
setting.setAttribute "name", "Color_Unknown_On"
setting.setAttribute "serializeAs", "String"
Set Value = document.createNode(MSXML2.NODE_ELEMENT, "value", nsURI)
Value.Text = "True"
setting.appendChild Value
userSettings.appendChild setting
configuration.appendChild userSettings
document.appendChild configuration
document.Save "hoge.xml"
'この辺,各変数にNothing入れる必要あるかもしれないけど
'よくわからんので放置
End Sub
この回答への補足
himajin100000さん
ありがとうございます。
早速、教えていただいたコードで試してみました。
XMLファイルを作ることが出来ました。
ただ、作成されたXMLファイルを見ると改行がなく、すべて1行に出力されていました。
各Nodeで改行とタブ(インテント)を入れることは可能でしょうか?
<Configuration><userSettings><setting name="Color_Unknown_On" serializeAs="String"><value>True</value></setting></userSettings></Configuration>
↓
<Configuration>
<userSettings>
<setting name="Color_Unknown_On" serializeAs="String">
<value>True</value>
</setting>
</userSettings>
</Configuration>
No.2
- 回答日時:
いやあ、参った参った。
そのままでは,だめっぽいっすね
http://msdn.microsoft.com/en-us/library/ms753769 …
>Example
If your DOMDocument contains unformatted XML, you might want to format it before saving. There is no flag in DOMDocument that can be set to indent your XML. In this situation, you might want to use the SAX writer to produce the resulting XML.
The following Microsoft Visual Basic example demonstrates how to perform DOM-to-SAX conversion to use the SAX writer's indent property. It then saves the output from the writer into a file in the application folder.
DOM単体じゃできないから,下のコードでSAXに移行して,そっちでindentプロパティ書け、とかかかれてます。
#最初はXSLTのoutputプロパティ使うかなーとか考えてたが,
#サンプルコードがなくて自力で書くのが面倒くさそうなので却下
himajin100000さま
ありがとうございました。
私もDOMのIndentを設定するPropertyを探したのですが見つかりませんでした。DOMには無いんですね。。。
XMLはTextファイルなのでhimajin100000さまに教えていただいた方法で出力して、後はFSOで修正します。
himajin100000さまのおかげで解決できそうです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- WordPress(ワードプレス) ワードプレスにて .xmlファイルの使い方をご存知の方、よろしくお願いいたします。 2 2022/09/30 00:55
- HTML・CSS ホームページのHTMLサイトマップを自動作成する方法を探しています。 1 2023/05/17 21:36
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- 数学 この数学問題、スマートに解く方法を教えてください。 3 2023/01/26 23:17
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- HTML・CSS 疑似要素で背景画像に指定したSVG画像の色変更 2 2023/01/30 22:45
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBでXMLファイルを作ると xmlns= が・・・
Visual Basic(VBA)
-
VBAでXMLを出力するプログラムを作成する際の名前空間接頭辞の付与の仕方について
Visual Basic(VBA)
-
VBA でxmlの全要素・属性の読み込み
Visual Basic(VBA)
-
-
4
VB6でXMLを処理するには
Visual Basic(VBA)
-
5
VB6.0でDOMを使用してノードを削除したい
Visual Basic(VBA)
-
6
XMLファイル内のデータ(値)を変更するには?
XML
-
7
MSXMLを使ってノードを削除したい。
XML
-
8
XMLの要素の内容の中に要素
Visual Basic(VBA)
-
9
VBSでxmlの値を書き換えたい
Visual Basic(VBA)
-
10
Excel-VBAでXMLの複数ノードの取り出し
Visual Basic(VBA)
-
11
XPathで途中に名前空間が設定されていると狙った要素を指定できない
XML
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでIEのボタンを押してメッセ...
-
DOM要素を削除しても、イベント...
-
ラジオボタンでreadonlyの切替え
-
特定ページから遷移した時にア...
-
Null またはオブジェクトではあ...
-
javascriptのdocument.allにつ...
-
<a>タグのテキストを取得
-
この将棋プログラムに王様ゲッ...
-
同じIDで定義した要素の配列を...
-
google apps scriptの終了のさせ方
-
ActiveXobjectが作成できない
-
idを使わずにonclickで自身の要...
-
翌月を取得するGASが分かりません
-
関数でy=g(x)のgとは何の略です...
-
ジェネレーターの作り方
-
jspからjavascriptの変数引継ぎ
-
functionから別のfunctionを実...
-
現在の日付から、1ヶ月前にす...
-
なぜ、ジャバスクリプトが表示...
-
C#テキストボックスの文字を配...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FireFoxのjavascriptで自動でキ...
-
Latexに関する質問です。
-
DOM要素を削除しても、イベント...
-
XMLでのAttributeを持ったNode...
-
TexでΣの添え字の位置直し
-
JavaScript window.openで開く...
-
Null またはオブジェクトではあ...
-
javascriptの基本的なことだと...
-
iframeのソースを取得したい
-
選択肢によってラジオボタンを...
-
excle VBA とweb上の検索を利用...
-
文字を一文字ずつ表示
-
ラジオボタンでreadonlyの切替え
-
responseTextについて
-
VBAのIE操作でframe構造のサイ...
-
サブウィンドウからのスタイル...
-
JavaScriptのdocument.all("変...
-
オンマウスについて
-
要素のリサイズをひろい、他の...
-
クリッカブルマップのリンク部...
おすすめ情報