Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Muhtar99 am Oktober 14, 2010, 10:00:58

Titel: Abfrage als XML ausgeben
Beitrag von: Muhtar99 am Oktober 14, 2010, 10:00:58
Hallo und Guten Morgen Leute,


folgendes,

habe eine Abfrage der die Daten aus einer tabelle sich zieht und diese Abfrage soll dann als xml datei gespeichert werden.

1. Application.ExportXML acExportQuery,.... bekomme ich zwar eine XML Datei aber die ,,Contentdescription" kommt n-mal vor

Wie kann ich aus access vba so steuern dass ich die daten richtig ausgeben kann.

Danke an alle im Voraus

MfG

Muhtar99
Titel: Re: Abfrage als XML ausgeben
Beitrag von: database am Oktober 14, 2010, 10:42:04
Hallo,

verstehe nicht ganz ...
Zitataber die ,,Contentdescription" kommt n-mal vor

Ich habe einmal testweise eine Tabelle mit ---
Application.ExportXML acExportTable, "tblKrankheit", "C:\krank.xml"
--- versucht auszugeben.
Ergebnis:


<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2010-10-14T10:29:05">
<tblKrankheit>
<KID>1</KID>
<Krankheit>Kopfschmerzen</Krankheit>
</tblKrankheit>
<tblKrankheit>
<KID>2</KID>
<Krankheit>Bauchschmerzen</Krankheit>
</tblKrankheit>
<tblKrankheit>
<KID>3</KID>
<Krankheit>Zahnschmerzen</Krankheit>
</tblKrankheit>
</dataroot>


...sieht für mich ganz wie eine 'normale' XML-Datei aus.

Wenn du meinst, nur die Struktur auszugeben und die entsprechenden Daten dann in dieses Struktur einzulesen, gibts hier eine schöne Erklärung dazu:
http://www.access-im-unternehmen.de/index1.php?id=300&BeitragID=266 (http://www.access-im-unternehmen.de/index1.php?id=300&BeitragID=266)
... und dazu weiterführend ...
http://www.access-im-unternehmen.de/231.0.html (http://www.access-im-unternehmen.de/231.0.html)
...wo unter 'Elemente mit Inhalt füllen' gezeigt wird, wie die Daten ins XML-File eingelesen werden.

HTH
Peter
Titel: Re: Abfrage als XML ausgeben
Beitrag von: TomTom2903 am Dezember 11, 2013, 18:30:36
Hallo,
habe eine Frage zu dem Thema. Ich weiß, dass dazu leider schon länger nichts mehr geschrieben wurde.
Nutze auch die Prozeduren von access im Unternehmen.

Gibt es die Möglichkeit den ausgegeben XML code auch leserlich im Editor darzustellen und nicht nur im Explorer.

Wenn ich das mit der Funktion
         Public Function FormatXML(strXML As String) As String
mache und diesen String im Anschluss als XML speichere ist dieser im Editor zwar super lesbar, aber dafür kann er im Explorer nicht mehr dargstellt werden.
Fehlermeldung: XML-Verarbeitungsfehler: nicht wohlgeformt
Liegt wohl an den Sonderzeichen und Umlauten.

Kennt sich jmd aus???
Danke für Eure Hilfe!!!
Gruß
Tom
Titel: Re: Abfrage als XML ausgeben
Beitrag von: Wurliwurm am Dezember 11, 2013, 20:58:36
"Nicht wohlgeformt" heißt, daß die öffnenden und schließenden Tags nicht aufgehen, das hat mit Sonderzeichen nichts zu tun.

Was ist Editor, was ist Explorer?
Wenn Du den Notepad meinst, der zeigt jede Form von Text ohne Syntayprüfung an. Der Internet Explorer prüft auf Wohlgeformtheit.

Was heißt "Contendescription kommt n-mal vor"?

Das XML, das mit der Standardfunktion ausgegeben wird, entspricht einem speziellen Standard-Schema von Microsoft. Es eignet sich nur zum Exportieren von und in MS-Office. Um in andere Strukturen auszugeben, kommt man um DOM nicht herum. Die XML-Bibliothek dazu ist sehr mächtig, erfodert aber Einarbeitungszeit.

Es wäre hilfreich, zu wissen, zum welchen Zweck und wie das gewünschte XML aussehen soll.

Titel: Re: Abfrage als XML ausgeben
Beitrag von: TomTom2903 am Dezember 12, 2013, 09:50:53
Hallo,
habe eine Beispiel-Datenbank erstellt.

Hier werden 2 XML erzeugt. Eines mit Formatierung und eins ohne Formatierung.

Das mit Formatierung kann man sich im Editor (Nodepad) wunderbar anzeigen lassen, allerdings nicht im Internetexplorer (Firefox).
Ohne Formatierung funktioniert im Firefox aber dafür wird nur eine Zeile im Editor (Nodepad) Angezeigt.

Mein Ziel wäre es jetzt, dass das XML im Editor vernünftig angezeigt wird und im Firefox natürlich dann auch funktioniert.

@WurliWurm: Hast du eine Idee?
Titel: Re: Abfrage als XML ausgeben
Beitrag von: Wurliwurm am Dezember 12, 2013, 10:45:03
Zitat von: TomTom2903 am Dezember 12, 2013, 09:50:53
Das mit Formatierung kann man sich im Editor (Nodepad) wunderbar anzeigen lassen, allerdings nicht im Internetexplorer (Firefox).

Es unterscheiden sich:


<?xml version="1.0"?>
<?xml version="1.0" encoding="iso-8859-1"?>

Offensichtlich braucht der Internetbrowser den Zeichensatz als Info.

Das andere Problem, daß im Texteditor keine Zeilenumbrüche dargestellt werden, kenne ich auch. Es ist aber nur ein optisches Problem. Kannst es mal mit einem Hexeditor anschauen, wo nicht druckbare Zeichen anzeigbar sind und/oder in unterschiedliche Zeichensätze (Latin, Unicode) speichern.

Für das xml an sich macht es keinen Unterscheid, wenn zwischen den Tags Zeilenumbrüche, Tabs oder Leerzeichen sind. Der IE macht diese automatisch bei der Anzeige und rückt wunderschön lesbar ein. Ob man von Haus aus diese Einrückungen aus dem VBA machen kann, weiß ich leider nicht. Ich würde aber davon abraten, über den mit OBJXML erzeugten XML-String nochmals in VBA  zu loopen, um ihn einzurücken (außer vielleicht als Programmierübung). Die Format XML Routine fand ich nicht so besonders nützlich. Besser fände ich es, mit einem XML-Editor zu arbeiten.


Titel: Re: Abfrage als XML ausgeben
Beitrag von: Wurliwurm am Dezember 12, 2013, 12:48:53
Ich habe gegoogelt, offensichtlich lösen das manche, indem sie hinter jedem Knotenhinzufügen schreiben

objNode.appendChild objXML.createTextNode(vbCrLf)

Das habe ich ausprobiert. Es bringt Zeilenumbrüche, aber erzeugt nicht die Einrückungen. Hier könnte man in der Schleife Strings aus Tabs je nach Tiefe verketten.

Hoffe, ein bißchen geholfen zu haben. Den Rest kann ich aber nicht mundgerecht servieren.
Titel: Re: Abfrage als XML ausgeben
Beitrag von: TomTom2903 am Dezember 12, 2013, 17:08:34
Hallo,
danke dir für deine Hilfe.

Na ja, hauptsache das XML funktioniert.  ;D
das mit dem Hinweis:
     "objNode.appendChild objXML.createTextNode(vbCrLf)"
ist auf jeden Fall mal nützlich!
Grüße
Tom
Titel: Re: Abfrage als XML ausgeben
Beitrag von: daolix am Dezember 12, 2013, 18:01:07
Hallo

wenn dein document auf MSXML2 basiert dann könntest du evtl versuchen die "><" in ">vbcrlf<" zu replacen.

Code (luftcode, ich kann accdb's nicht lesen) [Auswählen]


...
dim pdoc As  MSXML2.IXMLDOMDocument
Set pDoc = New MSXML2.DOMDocument
...
Add hier deine Nodes und Attribute
...

pDoc.loadXML Replace(pDoc.XML, "><", ">" + vbCrLf + "<")
pdoc.save "deine Datei"