XML-Attribute erzeugen schlägt fehl

  • Excel

    XML-Attribute erzeugen schlägt fehl

    Hallo zusammen,

    ich versuche gerade eine xml-Datei via VBA zu rekonstruieren, was ansich ganz gut funktioniert.
    Jetzt hab ich jedoch ein Problem bei einem Attribut.

    Folgendes soll erreicht werden:

    XML-Quellcode

    1. <Interface>
    2. <Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v3">
    3. <Section Name="Input"/>
    4. <Section Name="Output"/>
    5. <Section Name="InOut"/>
    6. <Section Name="Temp">
    7. <Member Name="in_Pos" Datatype="Bool"/>
    8. </Section><Section Name="Constant"/>
    9. <Section Name="Return">
    10. <Member Name="Ret_Val" Datatype="Void" Accessibility="Public"/>
    11. </Section>
    12. </Sections>
    13. </Interface>


    Ich erhalte aber folgendes:

    XML-Quellcode

    1. <Interface>
    2. <Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v3">
    3. <Section xmlns="" Name="Input"/>
    4. <Section xmlns="" Name="Output"/>
    5. </Sections>
    6. </Interface>


    Wie man sieht, wird in Section zusätzlich xmlns="" geschrieben.

    Hier mein Code, der den Teil erstellt.

    Visual Basic-Quellcode

    1. ...
    2. Set interface = AttributeList.appendChild(XDoc.createElement("Interface"))
    3. Set Sections = interface.appendChild(XDoc.createElement("Sections"))
    4. Set XMLNS = XDoc.createAttribute("xmlns")
    5. XMLNS.NodeValue = "http://www.siemens.com/automation/Openness/SW/Interface/v3"
    6. Sections.setAttributeNode XMLNS
    7. Set Section = Sections.appendChild(XDoc.createElement("Section"))
    8. Set Name = XDoc.createAttribute("Name")
    9. Name.NodeValue = "Input"
    10. Section.setAttributeNode Name
    11. Set Section = Sections.appendChild(XDoc.createElement("Section"))
    12. Set Name = XDoc.createAttribute("Name")
    13. Name.NodeValue = "Output"
    14. Section.setAttributeNode Name


    Was mache ich falsch?

    // EDIT

    Habs selbst hinbekommen:

    Visual Basic-Quellcode

    1. Set Interface = AttributeList.appendChild(XDoc.createElement("Interface"))
    2. Set Sections = Interface.appendChild(XDoc.createNode(1, "Sections", "http://www.siemens.com/automation/Openness/SW/Interface/v3"))
    3. '---
    4. Set Section = Sections.appendChild(XDoc.createNode(1, "Section", Sections.NamespaceURI))
    5. Set Name = XDoc.createAttribute("Name")
    6. Name.NodeValue = "Input"
    7. Section.setAttributeNode Name

    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „T1g0r“ ()