XML als Bit(/String-)folge speichern via Java

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • XML als Bit(/String-)folge speichern via Java

    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


    Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE Turnier SYSTEM "Turnier.dtd" >
    3. <tunier>
    4. <spiel>
    5. <spieler>Lisa</spieler>
    6. <spieler>Bart</spieler>
    7. <satz>
    8. <punkte>42</punkte>
    9. <punkte>21</punkte>
    10. </satz>
    11. <satz>
    12. <punkte>47</punkte>
    13. <punkte>11</punkte>
    14. </satz>
    15. <satz>
    16. <punkte>23</punkte>
    17. <punkte>5</punkte>
    18. </satz>
    19. <satz>
    20. <punkte>8</punkte>
    21. <punkte>19</punkte>
    22. </satz>
    23. </spiel>
    24. <spiel>
    25. <spieler>Otto</spieler>
    26. <spieler>Moe</spieler>
    27. <satz>
    28. <punkte>41</punkte>
    29. <punkte>22</punkte>
    30. </satz>
    31. <satz>
    32. <punkte>46</punkte>
    33. <punkte>12</punkte>
    34. </satz>
    35. <satz>
    36. <punkte>22</punkte>
    37. <punkte>6</punkte>
    38. </satz>
    39. <satz>
    40. <punkte>7</punkte>
    41. <punkte>20</punkte>
    42. </satz>
    43. </spiel>
    44. </tunier>
    Alles anzeigen



    und das ist mein code bisher

    Quellcode

    1. import java.io.FileInputStream;
    2. import javax.xml.stream.XMLInputFactory;
    3. import javax.xml.stream.XMLStreamException;
    4. import javax.xml.stream.XMLStreamReader;
    5. public class sTaxParser {
    6. public static XMLStreamReader parser;
    7. private static void write(String s) {
    8. System.out.print(s);
    9. }
    10. public static void main(String[] args) {
    11. XMLInputFactory factory = XMLInputFactory.newInstance();
    12. try {
    13. parser = factory.createXMLStreamReader(new
    14. FileInputStream("Punkteliste.xml"));
    15. do {
    16. if (parser.isStartElement()) {
    17. write("<"+parser.getName()+">");
    18. write(" 1 "+parser.getName()+"\n");
    19. }
    20. else if (parser.isEndElement()) {
    21. write("</"+parser.getName()+">");
    22. write(" 0\n");
    23. }
    24. else if (parser.isCharacters()) {
    25. write("");
    26. if(parser.getText()!="") {
    27. write(parser.getText());
    28. write(" 10 "+parser.getText()+"\n");
    29. }
    30. }
    31. parser.next();// hole das nächste Token
    32. } while (parser.hasNext()) ; // solange es noch Token gibt,
    33. } catch (XMLStreamException e) {
    34. e.printStackTrace();
    35. } catch (java.io.FileNotFoundException e) {
    36. write("XML-Datei nicht gefunden");
    37. }
    38. }
    39. }
    Alles anzeigen


    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