Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Namespace mit XML DOM zuweisen
zurück: Probleme bei der Darstellung eines Berichts weiter: Excel Import klappt nicht Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
klaus38
Im Profil kannst Du frei den Rang ändern


Verfasst am:
01. Sep 2009, 11:19
Rufname:

Namespace mit XML DOM zuweisen - Namespace mit XML DOM zuweisen

Nach oben
       Version: Office XP (2002)

Hallo,

ich kämpfe damit, ein komplexes XML-File über VBA zu erstellen und werde in diesem Rahmen sicher viele Fragen an euch haben in nächster Zeit.
Aktuell macht mir der namespace Probleme. Ich habe einfach noch nicht gefunden, mit welchem Befehl ich die folgenden Zeilen per XML DOM einer XML Datei hinzufügen kann:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<ns:projekt xmlns:ns="http://www..../xml/ns_20090216.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ns.de/xml/ns-20090216.xsd ns-20090216.xsd">
...
</ns:projekt>
Code bisher:
Code:
    Dim objXML As New MSXML2.DOMDocument

   objXML.loadXML "<ns:envelope/>"
Hier kommt Fehler 91 (Objekt- oder With-Variable nicht festgelegt). Wird verursacht durch den vorangestellten Präfix "ns:".

Das folgende funktioniert zwar:
Code:
    strElementName = "ns:body"
    Set objElementBody = objXML_BGS.createElement(strElementName)
    objXML_BGS.documentElement.appendChild objElementBody
    objXML.Save "D:\temp\XML_test.xml"
Wird aber dann beim Parsen nicht akzeptiert (Fehler: XML-Verarbeitungsfehler: Präfix nicht an einen Namespace gebunden)

Folgendes funktioniert auch noch nicht:
Code:
    Dim xmlInstruct As IXMLDOMProcessingInstruction
   
    Set xmlInstruct = objXML_BGS.createProcessingInstruction("xml", _
                                                   "version=""1.0""" & strISO)
    Call objXML_BGS.insertBefore(xmlInstruct, objXML_BGS.childNodes.Item(0))
Ihr seht, so ein Held bin ich auf diesem Gebiet noch lange nicht.
Kann mir jemand weiterhelfen? Würde mich sehr freuen.
steffen0815
VBA-Programmierer


Verfasst am:
01. Sep 2009, 11:52
Rufname:


AW: Namespace mit XML DOM zuweisen - AW: Namespace mit XML DOM zuweisen

Nach oben
       Version: Office XP (2002)

Hallo,
vom Held ebenfalls meilenweit entfernt, aber mit einem Beispiel für dich Wink
Code:
Option Compare Database
Option Explicit
Const StdNameSpace = "http://www.isotc211.org/2005/gmd"

Sub HeaderSchreiben()
    Const datnam = "d:\tar\xmldat.xml"
    Dim objXML As New MSXML2.DOMDocument
    Dim objPI As MSXML2.IXMLDOMProcessingInstruction
    Dim objKomm As MSXML2.IXMLDOMComment
    Dim objNode0 As MSXML2.IXMLDOMNode
    Dim objNode1 As MSXML2.IXMLDOMNode
    Dim objAtt As MSXML2.IXMLDOMAttribute
     
    With objXML
        Set objPI = .createProcessingInstruction("xml", _
                                    "version=""1.0"" encoding=""iso-8859-1""")
        .appendChild objPI
        ' Sicherheitswarung für lokale Datei unterdrücken
        ' http://aktuell.de.selfhtml.org/artikel/sonstiges/markoftheweb/index.htm
        Set objKomm = .createComment(" saved from url=(0013)about:internet ")
        .appendChild objKomm
        Set objNode0 = .appendChild(.createNode(NODE_ELEMENT, "ns:projekt", _
                                                StdNameSpace))
        Set objAtt = .createAttribute("xmlns:gmd")
        objAtt.Value = "http://www.isotc211.org/2005/gmd"
        objNode0.Attributes.setNamedItem objAtt
        Set objAtt = .createAttribute("xmlns:srv")
        objAtt.Value = "http://www.isotc211.org/2005/srv"
        objNode0.Attributes.setNamedItem objAtt
        Set objAtt = .createAttribute("xmlns:gsr")
        objAtt.Value = "http://www.isotc211.org/2005/gsr"
        objNode0.Attributes.setNamedItem objAtt
        Set objAtt = .createAttribute("xmlns:gts")
        objAtt.Value = "http://www.isotc211.org/2005/gts"
        objNode0.Attributes.setNamedItem objAtt
        Set objAtt = .createAttribute("xmlns:gss")
        objAtt.Value = "http://www.isotc211.org/2005/gss"
        objNode0.Attributes.setNamedItem objAtt
        Set objAtt = .createAttribute("xmlns:gco")
        objAtt.Value = "http://www.isotc211.org/2005/gco"
        objNode0.Attributes.setNamedItem objAtt
        Set objAtt = .createAttribute("xmlns:gml")
        objAtt.Value = "http://www.opengis.net/gml"
        objNode0.Attributes.setNamedItem objAtt
        Set objAtt = .createAttribute("xmlns:xlink")
        objAtt.Value = "http://www.w3.org/1999/xlink"
        objNode0.Attributes.setNamedItem objAtt
        Set objAtt = .createAttribute("xmlns:xsi")
        objAtt.Value = "http://www.w3.org/2001/XMLSchema-instance"
        objNode0.Attributes.setNamedItem objAtt
    End With
    objXML.Save datnam
    'fncXMLDOMDocumentFormatieren(objXML).Save datnam
    'ShellExecute 0, "open", datnam, "", "", 0
    'ZeigeMitIE datnam
End Sub

_________________
Gruß Steffen
klaus38
Im Profil kannst Du frei den Rang ändern


Verfasst am:
01. Sep 2009, 12:59
Rufname:

AW: Namespace mit XML DOM zuweisen - AW: Namespace mit XML DOM zuweisen

Nach oben
       Version: Office XP (2002)

Hallo Steffen,

das kommt dabei raus. Das sieht ja schon gut aus:
Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<ns:projekt xmlns:ns="http://www.isotc211.org/2005/gmd" ... xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
Das kommt meinem Wunsch schon sehr nah. Fehlt nur noch das schließende Tag </ns:projekt>. Hast du dafür noch eine Idee?
Gast



Verfasst am:
01. Sep 2009, 13:24
Rufname:

AW: Namespace mit XML DOM zuweisen - AW: Namespace mit XML DOM zuweisen

Nach oben
       Version: Office XP (2002)

Hallo,
Zitat:
Das kommt meinem Wunsch schon sehr nah. Fehlt nur noch das schließende Tag </ns:projekt>.
Ich denke da irrst du Wink.

Es gibt keine Unterknoten (Element ohne Inhalt), also ist
Code:
<ns:projekt ...../>
die (eine) korrekte Syntax.

Sobald du den ersten Knoten einfügst
Code:
        objNode0.appendChild (.createNode(NODE_ELEMENT, "dummy", ""))
hast du das erwartete Ergebnis.

Gruß Steffen
klaus38
Im Profil kannst Du frei den Rang ändern


Verfasst am:
01. Sep 2009, 15:01
Rufname:

AW: Namespace mit XML DOM zuweisen - AW: Namespace mit XML DOM zuweisen

Nach oben
       Version: Office XP (2002)

klaus38 am 01. Sep 2009 um 13:26 hat folgendes geschrieben:
Ah ja klar, du hast Recht : -)
Bin schon am Einbauen.
Melde mich dann, wenn es läuft.
Danke schon mal!

So, nun habe ich mal ausführlich damit rumgespielt. Mir fehlen ein bisschen die theoretischen Grundlagen dazu. Ich kenne zwar XML und habe mich auch mit Schemas beschäftigt, aber zu XML DOM fehlt mir noch eine kurze, übersichtliche Referenz. Ich weiß z. B. nicht, wann ich ein MSXML2.IXMLDOMElement und wann ein MSXML2.IXMLDOMNode verwende. Beide tun scheinbar dasselbe:
Code:
    'Ebene 2
    Set objElement = .createElement("Header")
    objElement.Text = "Ebene 2"
    objXML.documentElement.appendChild objElement
    'Ebene 3
    Set objNode = objElement.appendChild(.createNode(NODE_ELEMENT, _
                                                     "Vertragsnummer", ""))
    objNode.nodeTypedValue = "Ebene 3"
OK, Node ist eine Zeile kürzer. Wahrscheinlich ist es auch vielleitiger. Kann ich das irgendwo kurz! nachlesen?
steffen0815
VBA-Programmierer


Verfasst am:
01. Sep 2009, 16:00
Rufname:

AW: Namespace mit XML DOM zuweisen - AW: Namespace mit XML DOM zuweisen

Nach oben
       Version: Office XP (2002)

Hallo,
dabei habe ich dir doch schon mal so schöne Dokumente verlinkt Wink
The Element Object
The Node Object

_________________
Gruß Steffen
klaus38
Im Profil kannst Du frei den Rang ändern


Verfasst am:
01. Sep 2009, 16:06
Rufname:


AW: Namespace mit XML DOM zuweisen - AW: Namespace mit XML DOM zuweisen

Nach oben
       Version: Office XP (2002)

Ja, stimmt, das hast. Du hab ich mir auch warm und trocken gelegt. Aber ein klitzekleines Bisschen hatte ich auf was Deutsches gehofft ; -)

Ich habe mich jetzt doch nochmal überwunden und meine Englisch-Abneigung ignoriert und muss sagen w3schools zu XML DOM ist wirklich sehr gut strukturiert und ausreichend erklärt.

Danke dafür.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Neu erstellter Spalte Datentyp Währung zuweisen 6 Marx 310 24. Sep 2012, 11:51
Marx Neu erstellter Spalte Datentyp Währung zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: XML Schema und .txt input 1 mooowe 202 10. Aug 2012, 14:04
steffen0815 XML Schema und .txt input
Keine neuen Beiträge Access Tabellen & Abfragen: Einem Ausdruck einen Wert zuweisen 2 base1ne 405 03. Aug 2010, 15:10
base1ne Einem Ausdruck einen Wert zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage: Wert aus Feld auslesen und dadurch Spalte zuweisen 2 Uwe aus HL 1311 16. Jul 2010, 13:55
Uwe aus HL Abfrage: Wert aus Feld auslesen und dadurch Spalte zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: XML- importieren 4 christianseiler 1522 07. Jun 2010, 17:47
christianseiler XML- importieren
Keine neuen Beiträge Access Tabellen & Abfragen: XML und Access 1 deixelmike 1127 22. Apr 2010, 22:01
Nouba XML und Access
Keine neuen Beiträge Access Tabellen & Abfragen: Ein XML datei in Access Einfügen und aktualisieren 52 laslo 3528 23. Sep 2009, 11:22
laslo Ein XML datei in Access Einfügen und aktualisieren
Keine neuen Beiträge Access Tabellen & Abfragen: Lizenzdatenbank / Primärschlüssel mehrere Werte zuweisen 3 NeophyteSL 2441 13. März 2009, 18:44
KlausMz Lizenzdatenbank / Primärschlüssel mehrere Werte zuweisen
Keine neuen Beiträge Access Formulare: [Endlosformular] Der Zeile zum Einfügen einen Wert zuweisen 1 Robert.M 700 09. Aug 2008, 23:09
maike kaluscha [Endlosformular]  Der Zeile zum Einfügen einen Wert zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: Position Punkte zuweisen 1 Helpme123548 404 16. Jun 2008, 19:15
Helpme123548 Position Punkte zuweisen
Keine neuen Beiträge Access Formulare: Pfad an ungebundenes OLE zuweisen 0 mausi181987 398 28. Mai 2008, 16:11
mausi181987 Pfad an ungebundenes OLE zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: datensatz zuweisen 5 mathias123 390 21. Mai 2008, 15:44
mathias123 datensatz zuweisen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln