【发布时间】:2021-11-23 10:04:51
【问题描述】:
我想在 VBA 中使用 MSXML 创建一个 XML。 目标输出非常基本:
<Main xmlns="http://www.myurl.com/xml">
<Info>
<BaseData>
<CreationDate>2021-11-10</CreationDate>
<Hardware>
<Frquency>100</Frquency>
</Hardware>
<SomeCode>000000_0000000</SomeCode>
<SomeName>HW GPU SoC 1</SomeName>
</BaseData>
</Info>
</Main>
但是我的代码在“Info”元素中生成了一个 xmlns 属性,我不知道为什么:
<Main xmlns="http://www.myurl.com/xml">
<Info xmlns="">
<BaseData>
<CreationDate>2021-11-10</CreationDate>
<Hardware>
<Frquency>100</Frquency>
</Hardware>
<SomeCode>000000_0000000</SomeCode>
<SomeName>HW GPU SoC 1</SomeName>
</BaseData>
</Info>
</Main>
代码如下:
Dim doc As New MSXML2.DOMDocument60
Dim root As IXMLDOMNode
Dim info As IXMLDOMElement, baseData As IXMLDOMElement
Dim someCode As IXMLDOMElement, someName As IXMLDOMElement, hardware As IXMLDOMElement, freq As IXMLDOMElement, creationDate As IXMLDOMElement
Dim namesp As String
namesp = "http://www.myurl.com/xml"
Set root = doc.createNode(NODE_ELEMENT, "Main", namesp)
doc.appendChild root
Set info = doc.createElement("Info")
Set baseData = doc.createElement("BaseData")
Set someCode = doc.createElement("SomeCode")
Set someName = doc.createElement("SomeName")
Set hardware = doc.createElement("Hardware")
Set freq = doc.createElement("Frquency")
Set creationDate = doc.createElement("CreationDate")
freq.Text = "100"
hardware.appendChild freq
creationDate.Text = "2021-11-10"
someCode.Text = "000000_0000000"
someName.Text = "HW GPU SoC 1"
baseData.appendChild creationDate
baseData.appendChild hardware
baseData.appendChild someCode
baseData.appendChild someName
info.appendChild baseData
root.appendChild info
doc.Save (filePath)
当我将行更改为“Set info = doc.createNode(NODE_ELEMENT, "Info", namesp)" 时,xmlns 属性将移动到 BaseData。这是为什么呢?
【问题讨论】: