2017-08-13 113 views
0

我正在为我的办公室工作建立一个xml文件。 我需要XML的结构是如下在vba中创建xml自我关闭标记

<MultiBlock xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="x- 
schema:ConfigFileSchema.xml"> 
<Model> 
<ModelName type="AlarmGroup">Alarm Groups</ModelName> 
</Model> 
<ErdbVersion> 
<DbVersion>12.0</DbVersion> 
</ErdbVersion> 
</MultiBlock> 

和我的代码是:

Sub create_alarmgroup() 
Dim objDom As DOMDocument 
Dim objRootElem As IXMLDOMElement  
Dim objMemberElem As IXMLDOMElement  
Dim objmembervar As IXMLDOMElement  
Dim objmemberatt As IXMLDOMAttribute  
Const QUOTE_MARK As Integer = 34 
Dim xmlVersion As MSXML2.IXMLDOMProcessingInstruction 
Set objDom = New DOMDocument 

Set xmlVersion = objDom.createProcessingInstruction("xml", "version=" & 
Chr(QUOTE_MARK) & "1.0" & Chr(QUOTE_MARK)) 
objDom.appendChild xmlVersion 

'Creates root element 
Set objRootElem = objDom.createElement("MultiBlock") 
objRootElem.setAttribute "xmlns", "x-schema:ConfigFileSchema.xml" 

objRootElem.setAttribute "xmlns:xsd", "http://www.w3.org/2001/XMLSchema" 

objRootElem.setAttribute "xmlns:xsi", "http://www.w3.org/2001/XMLSchema- 
instance" 
objDom.appendChild objRootElem 

'==========ROOT ELEMENT END================ 

'Create Member element - MODEL 
Set objMemberElem = objDom.createElement("Model") 
objMemberElem.Text = " " 

objRootElem.appendChild objMemberElem 

Set objmembervar = objDom.createElement("ModelName") 
Set objmemberatt = objDom.createAttribute("type") 
objmemberatt.NodeValue = "AlarmGroup" 
objmembervar.setAttributeNode objmemberatt 
objmembervar.Text = "Alarm Groups" 

objMemberElem.appendChild objmembervar 

Set objMemberElem = objDom.createElement("ErdbVersion") 
objMemberElem.Text = " " 
objRootElem.appendChild objMemberElem 
Set objmembervar = objDom.createElement("DbVersion") 
objmembervar.Text = "12.0" 
objRootElem.appendChild objmembervar 


'Save to disk 
Cells(5, 1).Select 
objDom.Save (ThisWorkbook.Path & "\srcvariables.cnf.xml") 

End Sub 

但我不能够在“模型”,“ErdbVersion”节点创建关闭标签。我不想使用自我关闭标签为我的XML和需要传统的XML。

请指导。

+0

您最后一句的含义不明确。 _and需要传统的xml_部分。 – jsotola

+0

你的问题不清楚。请显示ACTUAL输出。 –

+0

除了将'DbVersion'附加为根元素的子元素而不是'ErdbVersion'的子元素之外,您的代码似乎正在生成您想要生成的内容。 (把'objRootElem.appendChild objmembervar'改为'objMemberElem.appendChild objmembervar'来解决这个问题。)你是什么意思?'我不能在Model中创建一个结束标记''? – YowE3K

回答

0

我找到了添加结束标记的方法。 我已将xml元素的文本属性设置为“”

xmlelement.text= " " 
相关问题