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
[XML]
<?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>
[/XML]
und das ist mein code bisher
Und das hier ist der Wortlaut aus der aufgabenstellung:
Wie gesagt, a) habe ich hinbekommen, zu b) fehlt mir der ansatz.
ich habe die forenregeln gelesen, und weiß dass ihr keine hausaufgaben macht, es würde mir durchaus reichen, wenn ihr mir brauchbare anstöße liefert
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
[XML]
<?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>
[/XML]
und das ist mein code bisher
Java:
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:
Der Algorithmus, den Sie programmieren sollen, erzeugt aus einem XML-Dokument (das zur
Vereinfachung dieser Aufgabe nur Element- und Text-Knoten enthält) eine Bitfolge und eine
Stringfolge.
Die Bitfolge speichert jeweils nur die Information, dass im XML-Dokument ein Element geö-
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.
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 können dabei auer acht gelassen
werden.
b) Speichern Sie die Bitfolge und die Stringfolge innerhalb je einer neuen Datei auf beliebige
Weise (jedoch ohne zusätzliche Informationen) ab.
Wie gesagt, a) habe ich hinbekommen, zu b) fehlt mir der ansatz.
ich habe die forenregeln gelesen, und weiß dass ihr keine hausaufgaben macht, es würde mir durchaus reichen, wenn ihr mir brauchbare anstöße liefert
Danke für eure zeit,
lg koly