🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

xml export

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: xml export

Beitrag von gogo » Sa 25. Jul 2015, 17:03

... auch sonst nicht wirklich jemand für dieses Thema zu interessieren. ...
xml ist ja nix anderes als eine Textdatei die eine erweitere Schnittstellendefiniton möglich macht. - d.h. es gibt eine definierte Syntax (siehe Wikipedia & Co) und darüber hinaus zig-tausende Definitionen wie so eine Datei im Einzelfall zu beschaffen sein hat, damit Im- und Export in eine bestimmte Anwendung funktionieren. Ein allgemein gültiges XML das den korrekten Import Deiner Daten in alle xml-kompatiblen Anwendungen ermöglich gibt's ganz einfach nicht.
Was ich damit sagen will: es gibt kein allgemeines Interesse, weil es einfach nur eine zu schreibende Textdatei ist:

Code: Alles auswählen

Select case getGUIType
	case 1
		sPrnt = "<?xml version=" & CHR$(34) & "1.0" & CHR$(34) & " encoding=" & CHR$(34) & "iso-8859-1" & CHR$(34) _
		& " standalone=" & CHR$(34) & "yes" & CHR$(34) & "?>"
	case 4
		sPrnt = "<?xml version=" & CHR$(34) & "1.0" & CHR$(34) & " encoding=" & CHR$(34) & "UTF-8" & CHR$(34) _
		& " standalone=" & CHR$(34) & "yes" & CHR$(34) & "?>"
	case else
		msgbox "Betriebsystem UNBEKANNT!"
		exit function
end select

iNumber = Freefile

Open sXML_URL  FOR Output AS iNumber

	print #iNumber, sPrnt
	print #iNumber, "<root barcode" & sO & gs_EB_BARCODE & sC & "gueltig" & sO & sGueltig01 & sC _
	& "Anmerkung" & sO & sAnmerkUE & sC & ">"

		oRecK = eSQL(sSQL_1)
		do while oRecK.next
			print #iNumber, "  <well " & oRecK.Getstring(1) &  " />"
		loop

		oRecP = eSQL(sSQL_2)
		do while oRecP.next
			print #iNumber, "    <well " & oRecP.Getstring(1) &  " />"
		loop

	print #iNumber, "</root>"

Close #iNumber
... nur so rauskopiert aus einem Makro - das exportiert unter Windows und UNIX korrekt.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Wanderer
* LO-Experte *
Beiträge: 909
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: xml export

Beitrag von Wanderer » Sa 25. Jul 2015, 22:56

Hallo,
elefantino hat geschrieben:Wenn es jetzt noch gelingt, die Zeilenumbrüche zu machen,
DIe Lösung dafür findest Du schon in Roberts Macro:
& CHR(13) & CHR(10)
hängt die ASCII-Zeichen 13 (CR) und 10 (LF) an einen String an und steht für den Zeilenhumbruch unter MS-DOS-Nachfolgern.
elefantino hat geschrieben:Trotzdem habe ich ehrlich gesagt noch nicht so richtig verstanden, wieso es so schwierig ist, einen Export als XML Datei zu machen, ich dachte, OpenOffice/Libreoffice basiert auf XML Dateien.
Einer der Problempunkte ist, daß die Daten nicht in AOO/LOO gespeichert sein müssen. Ich greife z.B. via .odb-Datei in LibreOffice auch auf lokale SQLite oder DBase-Dateien zu und wo eine MySQL-Datenbank läuft, auf die ich zugreife ist ein ganz anderes Kapitel. Es gibt also kein generelles Format, in dem Deine Daten gespeichert sind.
Es gäbe durchaus einen schnellen Weg zu einer xml-Datei, der Dir aber wohl nicht nützt: Kopier Deine Tabelle nach Calc und wähle "Speichern unter". Dir wird sowohl ein Flat-XML, wie auch Excel2003-XML als Format zum speichern angeboten. Das Ergebnis dürfte aber nicht das sein was Du suchst - wie von Gogo bereits ausgeführt. Es sind jeweils spezielle Interpretationen des xml-Formats.

Es führt also kein Weg dran vorbei Deine eigenen Routine zu erzeugen oder anzupassen, wenn Dir die Makros von Robert und Gogo nicht reichen.

MfG, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: xml export

Beitrag von RobertG » So 26. Jul 2015, 20:39

Hallo *,

ich habe noch ein bisschen nachgelegt, bevor das in den Beispieldatenbanken erscheinen soll. In XML gibt es ja eine Reihe von Sonderzeichen, die nicht einfach im Text erscheinen dürfen. Siehe: http://wiki.selfhtml.org/wiki/XML/Regeln/Zeichen
Ich habe die Umwandlung beim Transport Daten raus aus Base und Daten rein in Base entsprechend eingebaut.

Gruß

Robert
Dateianhänge
Beispiel_XML_Export_Import.odb.zip
Export und Import mit XML-Sonderzeichen
(17.31 KiB) 229-mal heruntergeladen
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

elefantino
Beiträge: 19
Registriert: Do 20. Mär 2014, 09:11

Re: xml export

Beitrag von elefantino » Mo 27. Jul 2015, 08:59

So langsam habe ich ein schlechtes Gewissen, dass ich so eine Welle losgetreten habe - Danke an alle, die an einer Lösung mitgeholfen haben.
Ich habe mittlerweile folgende Lösung verwendet:

Code: Alles auswählen

Sub ExportX
   Dim oleService, oXMLexp as Object
   Dim oRoot, oNode, oFatturaElettronicaHeader as Object
   DIM oDoc AS OBJECT
   DIM oDrawpage AS OBJECT
   DIM oForm AS Object
   Dim sNome As string
   Dim sAdresse As string
   
   oDoc = thisComponent
   oDrawpage = oDoc.Drawpage
   
   
   oForm = oDrawpage.Forms.getByName("Besitzer")
      sNome = oForm.getByName("txtNome").CurrentValue
      sAdresse = oForm.getByName("txtAdresse").CurrentValue
      
   oleService = createUnoService("com.sun.star.bridge.OleObjectFactory") 

' Create an XML object to export
   oXMLexp = oleService.createInstance("Msxml.DOMDocument")

With oXMLexp
    .async = true
    .validateOnParse = true
    .resolveExternals = true
    .appendChild .createProcessingInstruction( _
                 "xml", _
                 "version=""1.0"" encoding = ""UTF-8"" standalone=""yes""")

    oRoot = .createElement("p:FatturaElettronica")
    oRoot.setAttribute("Versione", "1.1")
    oRoot.setAttribute("xmlns:ds", "http://www.w3.org/2000/09/xmldsig#")
    oRoot.setAttribute("xmlns:p", "http://www.xxxx")
    oRoot.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")

       oFatturaElettronicaHeader = .createElement("Name")               
       oFatturaElettronicaHeader.nodeTypedValue =  sNome
       oRoot.appendChild(oFatturaElettronicaHeader)
		   
		   oDatiTrasmissione = .createElement("Adresse") 
		    oDatiTrasmissione.nodeTypedValue = sAdresse
		    oFatturaElettronicaHeader.appendChild(oDatiTrasmissione)
 
			    oIdTrasmittente = .createElement("IdTrasmittente") 
			    oIdTrasmittente.nodeTypedValue = "555"
			    oDatiTrasmissione.appendChild(oIdTrasmittente)
			    
    .Save("C:\Dati\Fattura\test.xml")
End With

End Sub

Nochmals Danke an alle die geholfen haben


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten