2016-07-30 45 views
-1

好夜:如何防止空白的xmlns输出VBA属性

我正在做丝带,当我创建节点根和命名空间,我把它像属性附加伤害。下一个节点是repites在毯子命名空间

Code: 
Private Sub crearRibbon() 
    Dim RibbonXml As DOMDocument60 
    Dim objRaizElem As IXMLDOMElement 
    Dim objRibbonElem As IXMLDOMElement 
    Dim objPestana As IXMLDOMElement 
    Dim objPestanas As IXMLDOMElement 
    Dim objGrupo As IXMLDOMElement 
    Dim objControl As IXMLDOMElement 
    Dim objRaizAtt As IXMLDOMAttribute 
    Dim objRibbonAtt As IXMLDOMAttribute 
    Dim objPestanaAtt As IXMLDOMAttribute 
    Dim objGrupoAtt As IXMLDOMAttribute 
    Dim objControlAtt As IXMLDOMAttribute 
    Dim strRibbon As String 
    Dim x As String 
    Dim oNode As MSXML2.IXMLDOMElement 


    Set RibbonXml = New DOMDocument60 

    'Raiz 
    Set objRaizElem = RibbonXml.createElement("customUI") 
    RibbonXml.appendChild objRaizElem 
    Set objRaizAtt = RibbonXml.createAttribute("xmlns") 
    objRaizAtt.Text = ("http://schemas.microsoft.com/office/2006/01/customui") 
    objRaizElem.setAttributeNode objRaizAtt 

    'Ribbon 

    Set objRibbonElem = RibbonXml.createElement("ribbon") 
    objRaizElem.appendChild objRibbonElem 
    Set objRibbonAtt = RibbonXml.createAttribute("startFromScratch") 
    objRibbonAtt.Text = ("True") 
    objRibbonElem.setAttributeNode objRibbonAtt 
    Set oNode = RibbonXml.selectSingleNode("//ribbon") 
    'Set oNode = RibbonXml.getElementsByTagName("/customUI/ribbon/[xmlns]") 
    'oNode.removeAttribute ("xmlns") 
    oNode.Attributes.removeNamedItem "xmlns" 


    'Pestaña 
    Set objPestana = RibbonXml.createElement("tabs") 
    objRibbonElem.appendChild objPestana 

    'Pestañas 
    Set objPestanas = RibbonXml.createElement("tab") 
    objPestana.appendChild objPestanas 
    Set objPestanaAtt = RibbonXml.createAttribute("id") 
    objPestanaAtt.Text = ("1") 
    objPestanas.setAttributeNode objPestanaAtt 
    Set objPestanaAtt = RibbonXml.createAttribute("label") 
    objPestanaAtt.Text = ("A Custom Tab") 
    objPestanas.setAttributeNode objPestanaAtt 
    Set objPestanaAtt = RibbonXml.createAttribute("visible") 
    objPestanaAtt.Text = ("true") 
    objPestanas.setAttributeNode objPestanaAtt 

    'Grupos 
    Set objGrupo = RibbonXml.createElement("group") 
    objPestanas.appendChild objGrupo 
    Set objGrupoAtt = RibbonXml.createAttribute("id") 
    objGrupoAtt.Text = ("dbCustomGroup") 
    objGrupo.setAttributeNode objGrupoAtt 
    Set objGrupoAtt = RibbonXml.createAttribute("label") 
    objGrupoAtt.Text = ("A Custom Group") 
    objGrupo.setAttributeNode objGrupoAtt 

    'Control 
    Set objControl = RibbonXml.createElement("control") 
    objGrupo.appendChild objControl 
    Set objControlAtt = RibbonXml.createAttribute("idMso") 
    objControlAtt.Text = ("Paste") 
    objControl.setAttributeNode objControlAtt 
    Set objControlAtt = RibbonXml.createAttribute("label") 
    objControlAtt.Text = ("Built-in Paste") 
    objControl.setAttributeNode objControlAtt 
    Set objControlAtt = RibbonXml.createAttribute("enabled") 
    objControlAtt.Text = ("true") 
    objControl.setAttributeNode objControlAtt 

    RibbonXml.Save ("miRibbon1.xml") 

末次

而且我的输出

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> 
<ribbon xmlns="" startFromScratch="False"> 
<tabs> 
<tab id="1" label="A Custom Tab" visible="true"> 
<group id="dbCustomGroup" label="A Custom Group"> 
<control idMso="Paste" label="Built-in Paste" enabled="true"/> 
</group> 
</tab> 
</tabs> 
</ribbon> 
</customUI> 

And ribbon xmlns="" 

它只能得到带状

感谢

+0

你在问什么? – dbmitch

+0

你在问什么并且应该是: emiliove

+0

英文花费我很多,但是在根节点命名空间之后把下面的节点带到节点中我的例子中,我向他展示了命名空间 我尝试添加项目以删除Ribbon节点中的IXMLDOMElement: 9月oNode = RibbonXml.selectSingleNode(“// ribbon”) oNode.Attributes.removeNamedItem“xmlns” 但是不删除它,我试过其他方法,但都没有成功。 谢谢 – emiliove

回答

0

已经解决,以消除空间xmlns =“”,而不是使用createElement,在我设置的地方使用CreateNode命名空间。

现在:

Set objPestanas = RibbonXml.createNode(1, "tab", "http://schemas.microsoft.com/office/2006/01/customui") 

前:

Set objPestanas = RibbonXml.createElement("tab") 

所有全:

Private Sub crearRibbon() 
Dim RibbonXml As DOMDocument60 
Dim objRaizElem As IXMLDOMElement 
Dim objRibbonElem As IXMLDOMElement 
Dim objPestana As IXMLDOMElement 
Dim objPestanas As IXMLDOMElement 
Dim objGrupo As IXMLDOMElement 
Dim objControl As IXMLDOMElement 
Dim objRaizAtt As IXMLDOMAttribute 
Dim objRibbonAtt As IXMLDOMAttribute 
Dim objPestanaAtt As IXMLDOMAttribute 
Dim objGrupoAtt As IXMLDOMAttribute 
Dim objControlAtt As IXMLDOMAttribute 
Dim strRibbon As String 


Set RibbonXml = New DOMDocument60 

'Raiz 
Set objRaizElem = RibbonXml.createNode(1, "customUI", "http://schemas.microsoft.com/office/2006/01/customui") 
RibbonXml.appendChild objRaizElem 

'Ribbon 

Set objRibbonElem = RibbonXml.createNode(1, "ribbons", "http://schemas.microsoft.com/office/2006/01/customui") 
objRaizElem.appendChild objRibbonElem 
Set objRibbonAtt = RibbonXml.createAttribute("startFromScratch") 
objRibbonAtt.Text = ("True") 
objRibbonElem.setAttributeNode objRibbonAtt 


'Pestaña 
Set objPestana = RibbonXml.createNode(1, "tabs", "http://schemas.microsoft.com/office/2006/01/customui") 
objRibbonElem.appendChild objPestana 

'Pestañas 
Set objPestanas = RibbonXml.createNode(1, "tab", "http://schemas.microsoft.com/office/2006/01/customui") 
Set objPestanas = RibbonXml.createElement("tab") 
objPestana.appendChild objPestanas 
Set objPestanaAtt = RibbonXml.createAttribute("id") 
objPestanaAtt.Text = ("1") 
objPestanas.setAttributeNode objPestanaAtt 
Set objPestanaAtt = RibbonXml.createAttribute("label") 
objPestanaAtt.Text = ("A Custom Tab") 
objPestanas.setAttributeNode objPestanaAtt 
Set objPestanaAtt = RibbonXml.createAttribute("visible") 
objPestanaAtt.Text = ("true") 
objPestanas.setAttributeNode objPestanaAtt 

'Grupos 
Set objGrupo = RibbonXml.createNode(1, "group", "http://schemas.microsoft.com/office/2006/01/customui") 
'Set objGrupo = RibbonXml.createElement("group") 
objPestanas.appendChild objGrupo 
Set objGrupoAtt = RibbonXml.createAttribute("id") 
objGrupoAtt.Text = ("dbCustomGroup") 
objGrupo.setAttributeNode objGrupoAtt 
Set objGrupoAtt = RibbonXml.createAttribute("label") 
objGrupoAtt.Text = ("A Custom Group") 
objGrupo.setAttributeNode objGrupoAtt 

'Control 
Set objControl = RibbonXml.createNode(1, "control", "http://schemas.microsoft.com/office/2006/01/customui") 
'Set objControl = RibbonXml.createElement("control") 
objGrupo.appendChild objControl 
Set objControlAtt = RibbonXml.createAttribute("idMso") 
objControlAtt.Text = ("Paste") 
objControl.setAttributeNode objControlAtt 
Set objControlAtt = RibbonXml.createAttribute("label") 
objControlAtt.Text = ("Built-in Paste") 
objControl.setAttributeNode objControlAtt 
Set objControlAtt = RibbonXml.createAttribute("enabled") 
objControlAtt.Text = ("true") 
objControl.setAttributeNode objControlAtt 

RibbonXml.Save ("miRibbon1.xml") 

末次

感谢所有