von preklov » Di, 30.06.2009 08:49
Ich habe nach weiteren Tests den Eindruck, dass mein Problem von der Größe der xml-Datei abhängt.
Die xml-Struktur sieht so aus:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<slots>
<slot status="active" type="internal" ID="10001">
<beta userID="X000001" systemID="Y000001" />
<document ID="1234" title="Ipp Zipp Zapp" />
<validTo>03.08.2009</validTo>
<lecturer name="Becker, Bobbele" ID="1704" title="Dr." email="bobbeleb@dtb.de" />
<orgUnit ID="01.01" label="Besenkammer" />
<derivate ID="21905" modified="15.06.2009" />
</slot>
</slots>
Das "slot"-Minimum ist das "beta"-Element. Alle anderen Elemente sind optional.
Mein StarBasic-Ansatz:
Code: Alles auswählen
Sub GetXMLData()
dim oSimpleFileAccess as object
dim oInputStream as object
dim oDocBuilder as object
dim oDocTree as object
dim sUrl as string
sUrl = "Z:\Eigene Dateien\testxml.xml"
oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oInputStream = oSimpleFileAccess.openFileRead(ConvertToURL(sUrl))
oDocBuilder = createUnoService("com.sun.star.xml.dom.DocumentBuilder")
oDocTree = oDocBuilder.parse(oInputStream)
oInputStream.closeInput()
ParseXMLData(oDocTree)
End Sub
Sub ParseXMLData(oTree)
dim oSlotList, oVtList, oDocList, oLectList as object
oDocList = oTree.getElementsByTagName("document")
print "Document-Nodes:", oDocList.getLength()
oSlotList = oTree.getElementsByTagName("slot")
print "Slot-Nodes:", oSlotList.getLength()
oVtList = oTree.getElementsByTagName("validTo")
print "ValidTo-Nodes:", oVtList.getLength()
oLectList = oTree.getElementsByTagName("lecturer")
print "Lecturer-Nodes:", oLectList.getLength()
End Sub
Ich habe die Listen in unterschiedlichen Kombinationen getestet. Wenn die xml-(Test-)Datei klein ist (4 slots, 2 kB), ist alles gut, bei einer großen echten aber (ca. 1300 slots, 476 kB) stürzt OpenOffice bei den "document"- und "lecturer"-Listen ab, obwohl sie etwas kleiner sind als die komplette "slot"-Liste.
An Strukturfehlern der xml-Datei kann es nicht liegen, denn der Zugriff über die Child-Nodes von slot funktioniert ohne jeglichen Fehler, ist aber relativ langsam.
Arbeitsspeicher 2 GB.
Hat jemand eine Idee?
Gruß
Volker
Ich habe nach weiteren Tests den Eindruck, dass mein Problem von der Größe der xml-Datei abhängt.
Die xml-Struktur sieht so aus:
[code]
<?xml version="1.0" encoding="UTF-8"?>
<slots>
<slot status="active" type="internal" ID="10001">
<beta userID="X000001" systemID="Y000001" />
<document ID="1234" title="Ipp Zipp Zapp" />
<validTo>03.08.2009</validTo>
<lecturer name="Becker, Bobbele" ID="1704" title="Dr." email="bobbeleb@dtb.de" />
<orgUnit ID="01.01" label="Besenkammer" />
<derivate ID="21905" modified="15.06.2009" />
</slot>
</slots>
[/code]
Das "slot"-Minimum ist das "beta"-Element. Alle anderen Elemente sind optional.
Mein StarBasic-Ansatz:
[code]
Sub GetXMLData()
dim oSimpleFileAccess as object
dim oInputStream as object
dim oDocBuilder as object
dim oDocTree as object
dim sUrl as string
sUrl = "Z:\Eigene Dateien\testxml.xml"
oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oInputStream = oSimpleFileAccess.openFileRead(ConvertToURL(sUrl))
oDocBuilder = createUnoService("com.sun.star.xml.dom.DocumentBuilder")
oDocTree = oDocBuilder.parse(oInputStream)
oInputStream.closeInput()
ParseXMLData(oDocTree)
End Sub
Sub ParseXMLData(oTree)
dim oSlotList, oVtList, oDocList, oLectList as object
oDocList = oTree.getElementsByTagName("document")
print "Document-Nodes:", oDocList.getLength()
oSlotList = oTree.getElementsByTagName("slot")
print "Slot-Nodes:", oSlotList.getLength()
oVtList = oTree.getElementsByTagName("validTo")
print "ValidTo-Nodes:", oVtList.getLength()
oLectList = oTree.getElementsByTagName("lecturer")
print "Lecturer-Nodes:", oLectList.getLength()
End Sub
[/code]
Ich habe die Listen in unterschiedlichen Kombinationen getestet. Wenn die xml-(Test-)Datei klein ist (4 slots, 2 kB), ist alles gut, bei einer großen echten aber (ca. 1300 slots, 476 kB) stürzt OpenOffice bei den "document"- und "lecturer"-Listen ab, obwohl sie etwas kleiner sind als die komplette "slot"-Liste.
An Strukturfehlern der xml-Datei kann es nicht liegen, denn der Zugriff über die Child-Nodes von slot funktioniert ohne jeglichen Fehler, ist aber relativ langsam.
Arbeitsspeicher 2 GB.
Hat jemand eine Idee?
Gruß
Volker