2016-07-30 48 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") 

末次

感謝所有