アプリ版:「スタンプのみでお礼する」機能のリリースについて

今、Excel付属のVBAを使用して、XMLを作成するプログラムを作成しております。
その際、名前空間(及び接頭辞)を付与したいのですが、方法が分からず苦慮しております。
VB.NET等での方法はわかったのですが、職場の開発環境上、VBAでなんとか対応したいところです。
もし何かご存知の方、いらっしゃいましたら、どうか教えていただきたく、よろしくお願いいたします。

===作成したいXML===
<?xml version="1.0" encoding="Shift_JIS" ?>
- <Root>
- <YOUSO xmlns:BBB="http://aaa.aa.aaa">
<YOSO2>AAAAAAA</YOSO2>
</YOUSO>
</Root>

===現在このようなXMLになってしまっております。===
<?xml version="1.0" encoding="Shift_JIS" ?>
- <Root>
- <YOUSO xmlns="http://aaa.aa.aaa">
<YOSO2 xmlns="">AAAAAAA</YOSO2>
</YOUSO>
</Root>

===作成したコード===
Sub TEST()
Dim xmlDoc As MSXML2.DOMDocument
Dim xmlPI As IXMLDOMProcessingInstruction
Dim node(3) As IXMLDOMNode

Set xmlDoc = New MSXML2.DOMDocument

'XML宣言
Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""Shift_JIS"""))

'<Root>要素
Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, "Root", ""))

'<YOSO1>要素
Set node(2) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "YOUSO", "http://aaa.aa.aaa"))

'<YOUSO2>要素
Set node(3) = node(2).appendChild(xmlDoc.createNode(NODE_ELEMENT, "YOUSO2", ""))
node(3).Text = "AAAAAAA"

'XMLドキュメントの出力
xmlDoc.Save ("customer.xml")
End Sub
============================
よろしくお願いいたします。

A 回答 (1件)

勘弁して欲しいよね >MSXML2


できない、とか、DOM 2 Core 対応してないからやりたくないって返す(下手に対応してあげちゃうと、そっちに安住されちゃうんだもん) > 職場

=======以下、あくまでやることを前提とせず、あくまで好奇心で実行してみたコード====================

Option Explicit

Sub TEST()
Dim xmlDoc As MSXML2.DOMDocument60
Dim element As MSXML2.IXMLDOMElement
Dim attr As MSXML2.IXMLDOMAttribute

Set xmlDoc = New MSXML2.DOMDocument60
Set element = xmlDoc.createElement("aaa")
xmlDoc.appendChild element
Set attr = xmlDoc.createNode(2, "xmlns:BB", "http://www.w3.org/2000/xmlns/")
attr.Text = "http://aaa.aa.aaa"
'ここからは無視
element.setAttribute "xmlns:AA", "http://xxx.com"
element.setAttributeNode attr
xmlDoc.Save ("C:\namespace.xml")
End Sub

'==============結果=================
<aaa xmlns:AA="http://xxx.com" xmlns:BB="http://aaa.aa.aaa"/>

MSXML2がサポートしてないであろうDOM 2 Coreにはちゃんと
http://www.w3.org/TR/DOM-Level-2-Core/core.html# …
A new Attr object with the nodeName attribute set to name, 【and localName, prefix, and namespaceURI set to null.】 The value of the attribute is the empty string.

って書いてあるんだけどなあ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!