2016-07-30 19 views
-1

Gute Nächte:Wie leer Xmlns verhindern Attribute in der Ausgabe VBA

Ich bin ein Band zu machen, und wenn ich den Knoten Wurzel und den Namespace erstellen Ich habe es wie atribute. der nächste Knoten repites es den Namespace in der Decke

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") 

End Sub

Und meine Ausgabe

<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="" 

es nur Band

Dank

+0

Was fragst du? – dbmitch

+0

Was fragen Sie Und sollte sein: emiliove

+0

Die englische kostet mich viel, aber nach dem Root-Namespace, um den unteren Knoten Ribbon-Knoten in Mein Fall, ich zeige ihm den Namespace Und ich habe versucht, das Element hinzuzufügen, um IXMLDOMElement im Ribbon-Knoten zu entfernen: Im September oNode = RibbonXml.selectSingleNode ("// Ribbon") oNode.Attributes.removeNamedItem "xmlns" Aber entfernt es nicht Und ich versuchte andere Möglichkeiten, aber keine von ihnen und erfolgreich. Vielen Dank – emiliove

Antwort

0

bereits gelöst bekommen würde zu beseitigen Der Space xmlns = "" anstelle von createElement verwende CreateNode, wo ich setze der Namespace.

Jetzt:

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

Bevor:

Set objPestanas = RibbonXml.createElement("tab") 

Alle voll:

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") 

End Sub

Dank an alle