Guten Tag miteinander.
Ich stehe vor dem Problem, das ich im Zuge einer Übung während meines Studiums eine XML Datei komprimieren soll (unser Professor will, das wir den Tags und Attributen bitwerte zuweisen). Diese sollen dann in einer eigenen datei gespeichert werden. den ersten teil, in dem wir den tags und attributen bitwerte zuweisen, den habe ich schon, aber ich komme leider nicht drauf, wie ich die nun speichern soll, so dass die nachher auch wieder ausgelesen werden können...
das ist die xml datei die ich parse
Alles anzeigen
und das ist mein code bisher
Alles anzeigen
Und das hier ist der Wortlaut aus der aufgabenstellung:
Wie gesagt, a) habe ich hinbekommen, zu b) fehlt mir der ansatz.
Danke für eure zeit,
lg koly
Ich stehe vor dem Problem, das ich im Zuge einer Übung während meines Studiums eine XML Datei komprimieren soll (unser Professor will, das wir den Tags und Attributen bitwerte zuweisen). Diese sollen dann in einer eigenen datei gespeichert werden. den ersten teil, in dem wir den tags und attributen bitwerte zuweisen, den habe ich schon, aber ich komme leider nicht drauf, wie ich die nun speichern soll, so dass die nachher auch wieder ausgelesen werden können...
das ist die xml datei die ich parse
Quellcode
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE Turnier SYSTEM "Turnier.dtd" >
- <tunier>
- <spiel>
- <spieler>Lisa</spieler>
- <spieler>Bart</spieler>
- <satz>
- <punkte>42</punkte>
- <punkte>21</punkte>
- </satz>
- <satz>
- <punkte>47</punkte>
- <punkte>11</punkte>
- </satz>
- <satz>
- <punkte>23</punkte>
- <punkte>5</punkte>
- </satz>
- <satz>
- <punkte>8</punkte>
- <punkte>19</punkte>
- </satz>
- </spiel>
- <spiel>
- <spieler>Otto</spieler>
- <spieler>Moe</spieler>
- <satz>
- <punkte>41</punkte>
- <punkte>22</punkte>
- </satz>
- <satz>
- <punkte>46</punkte>
- <punkte>12</punkte>
- </satz>
- <satz>
- <punkte>22</punkte>
- <punkte>6</punkte>
- </satz>
- <satz>
- <punkte>7</punkte>
- <punkte>20</punkte>
- </satz>
- </spiel>
- </tunier>
und das ist mein code bisher
Quellcode
- import java.io.FileInputStream;
- import javax.xml.stream.XMLInputFactory;
- import javax.xml.stream.XMLStreamException;
- import javax.xml.stream.XMLStreamReader;
- public class sTaxParser {
- public static XMLStreamReader parser;
- private static void write(String s) {
- System.out.print(s);
- }
- public static void main(String[] args) {
- XMLInputFactory factory = XMLInputFactory.newInstance();
- try {
- parser = factory.createXMLStreamReader(new
- FileInputStream("Punkteliste.xml"));
- do {
- if (parser.isStartElement()) {
- write("<"+parser.getName()+">");
- write(" 1 "+parser.getName()+"\n");
- }
- else if (parser.isEndElement()) {
- write("</"+parser.getName()+">");
- write(" 0\n");
- }
- else if (parser.isCharacters()) {
- write("");
- if(parser.getText()!="") {
- write(parser.getText());
- write(" 10 "+parser.getText()+"\n");
- }
- }
- parser.next();// hole das nächste Token
- } while (parser.hasNext()) ; // solange es noch Token gibt,
- } catch (XMLStreamException e) {
- e.printStackTrace();
- } catch (java.io.FileNotFoundException e) {
- write("XML-Datei nicht gefunden");
- }
- }
- }
Und das hier ist der Wortlaut aus der aufgabenstellung:
Die Bitfolge speichert jeweils nur die Information, dass im XML-Dokument ein Element geo-
net (1) bzw. geschlossen (0) wurde oder dass ein Text (10) gefunden wurde.
Die Stringfolge speichert alle im XML-Dokument auftretenden Namen von Start-Tags und
alle auftretenden Texte in der Reihenfolge Ihres Auftretens.
Abbildung 2 zeigt ein Beispiel einer solchen Kompression.
a) Lesen sie das XML-Dokument von Aufgabe 1 ein, und komprimieren Sie es mittels StAX
oder SAX, so wie in Abbildung 2 dargestellt. Formatierungen konnen dabei auer acht gelassen
werden.
b) Speichern Sie die Bitfolge und die Stringfolge innerhalb je einer neuen Datei auf beliebige
Weise (jedoch ohne zusatzliche Informationen) ab.
Wie gesagt, a) habe ich hinbekommen, zu b) fehlt mir der ansatz.
Danke für eure zeit,
lg koly