- 締切済み
vb6 XMLファイル出力について<S></S>
vb6にてXMLファイル出力のプログラムを作成しています。 XMLファイル内容 <?xml version="1.0" encoding="UTF-8"?> <root> <key>AA</key> <string>aa</string> <key>BB</key> <string/> </root> 上記の<string/>の部分を<string></string>のように出力したいのですが、 どうしても上手くいきません。 下記にソースを記載します。 何か少しでもお分かりになる情報がありましたらご教授願いします。 よろしくお願いします。 Dim xmlDoc As MSXML2.DOMDocument 'XMLドキュメント Dim xmlPI As IXMLDOMProcessingInstruction 'XML宣言 Dim node(50) As IXMLDOMNode '要素 Dim attr As MSXML2.IXMLDOMAttribute '属性 'XMLドキュメントを作成 Set xmlDoc = New MSXML2.DOMDocument 'XML宣言を追加 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) '<root>要素を追加 Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, "root", "")) '<key>要素を追加 Set node(2) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "key", "")) node(2).Text = "AA" '<string>要素を追加 Set node(3) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "string", "")) node(3).Text = "aa" '<key>要素を追加 Set node(4) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "key", "")) node(4).Text = "BB" '<string>要素を追加 Set node(5) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "string", "")) node(5).Text = "" 'XMLドキュメントの出力 Dim strXMLFile As String strXMLFile = Format(Date, "yyyymmdd") & Format(Time, "hhmmss") xmlDoc.save ("C:TEST\TEST.xml") '終了処理 If Not xmlDoc Is Nothing Then Set xmlDoc = Nothing If Not xmlPI Is Nothing Then Set xmlPI = Nothing
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- mitarashi
- ベストアンサー率59% (574/965)
VBAでMSXMLを使用していますが、質問者様とは逆のニーズで悩まされました。当方が到達した結論は、 「MSXMLは、<S></S>を出力するか、<S/>を出力するかは気紛れなので、XML生成後にテキスト処理して、統一するしか無い」 というものです。 仕方が無いので、正規表現を用いて<S></S>を<S/>に整形しています。 ところで、空要素に対して、 <S attribute1="a" attribute2="b"></S attribute1="a" attribute2="b"> 等という、IEがエラーと見なして?表示しないようなXMLまで吐き出してくれる事があります。この対策として、空要素の代わりに、絶対他に使わないであろう文字・文字列を入れておいて、最後にテキスト処理で空文字と置換(つまり削除)する方法を取っています。これにより、<S attribute1="a" attribute2="b"></S>を出力する事ができます。 この手法を応用すると、当然<S/>が出来る事は無く、<S></S>になります。ご参考まで。
もしくは node(5).Text = "kkkk" と出力してみる。
- himajinTest
- ベストアンサー率47% (8/17)
>上記の<string/>の部分を<string></string>のように出力したい すまん、逆だったorz <string></string>となってしまうのを<string/>と出力したいのだと思っていた。MSXMLv3.0で出力した手元のファイルをメモ帳で開くと<string></string>となっているけどなぁ?
- himajinTest
- ベストアンサー率47% (8/17)
http://www.jenitennison.com/2007/04/25/msxml-serialisation-of-empty-elements.html >node(5).Text = "" を削除?