I am trying to set multiple namespaces with prefixes to my root element.
I managed partially to do so with .DocumentElement.setAttribute:
In excel I am using reference to MicrosoftXML, v6.0.
Sub ExportAsXML()
Set oXMLDoc = CreateObject("MSXML2.DOMDocument")
Set oPI = oXMLDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""utf-8""")
Set oRootDeklaracja = oXMLDoc.createNode(1, "Deklaracja", "http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2013/05/23/eD/KodyCECHKRAJOW/")
oXMLDoc.appendChild oRootDeklaracja
oXMLDoc.DocumentElement.setAttribute "xmlns:kpkd", "http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/02/01/eD/KodyPKD/"
oXMLDoc.DocumentElement.setAttribute "xmlns:etd", "http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/08/24/eD/DefinicjeTypy/"
oXMLDoc.DocumentElement.setAttribute "xmlns:tns", "http://crd.gov.pl/wzor/2019/08/07/8334/"
oXMLDoc.DocumentElement.setAttribute "xsi:schemaLocation", "http://crd.gov.pl/wzor/2019/08/07/8334/"
oXMLDoc.DocumentElement.setAttribute "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"
oXMLDoc.InsertBefore oPI, oXMLDoc.ChildNodes.Item(0)
oXMLDoc.Save "test.xml"
End Sub
The output of the above is (please also note that the "ns1:" prefix in front of "Deklaracja" element is missing):
<?xml version="1.0" encoding="utf-8"?>
<Deklaracja xmlns="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2013/05/23/eD/KodyCECHKRAJOW/" xmlns:kpkd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/02/01/eD/KodyPKD/" xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/08/24/eD/DefinicjeTypy/" xmlns:tns="http://crd.gov.pl/wzor/2019/08/07/8334/" xsi:schemaLocation="http://crd.gov.pl/wzor/2019/08/07/8334/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
The result I intend to achieve is as follows:
<?xml version="1.0" encoding="utf-8"?>
<tns:Deklaracja xmlns="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2013/05/23/eD/KodyCECHKRAJOW/" xmlns:kpkd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/02/01/eD/KodyPKD/" xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/08/24/eD/DefinicjeTypy/" xmlns:tns="http://crd.gov.pl/wzor/2019/08/07/8334/" xsi:schemaLocation="http://crd.gov.pl/wzor/2019/08/07/8334/ schema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>