- 締切済み
VBAでXMLを出力するプログラムを作成する際の名前空間接頭辞の付与の仕方について
今、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 ============================ よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- himajin100000
- ベストアンサー率54% (1660/3060)
勘弁して欲しいよね >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#ID-1084891198 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. って書いてあるんだけどなあ