Hallo,
kennt jemand von euch die Bibliothek javabib? Es ist eine API zum Parsen von BibTex-Dateien. Das parsen an sich klappt auch wunderbar:
So, aber das Schreiben in eine Datei, das versteh ich noch nicht. Nun gibt es die Methode printBibtex, sowohl beim BibtexFile als auch bei BibtexEntry.
Die Methode über den PrintWriter scheint die einzige Möglichkeit zu sein, Daten wieder auszugeben. Wie kriegt man diese am besten über PrintWriter in eine Datei?
Habe schon im obigen Code in die for-next-Schleife folgendes versucht:
Aber da gibt es angeblich eine Null-Pointer-Exception in der Zeile mit "printBibtex(pf)":
kennt jemand von euch die Bibliothek javabib? Es ist eine API zum Parsen von BibTex-Dateien. Das parsen an sich klappt auch wunderbar:
Code:
BibtexFile bf = new BibtexFile();
BibtexParser bp = new BibtexParser(false);
InputStreamReader isr;
InputStream is;
try {
File bibfile = fc.getSelectedFile();
is = new FileInputStream(bibfile);
isr = new InputStreamReader(is, "ISO8859_1");
bp.parse(bf, isr);
List<BibtexNode> bibNodes = bf.getEntries();
BibtexEntry flushit = null;
for(BibtexNode node: bibNodes) {
if(node instanceof BibtexEntry) {
// get bibtex-entry
BibtexEntry entry = (BibtexEntry)node;
// get all entry fields
Map m = entry.getFields();
// retrieve all keys, i.e. author, title etc.
Set<?> ks = m.keySet();
Iterator<?> ksi = ks.iterator();
while(ksi.hasNext()) {
String s = (String) ksi.next();
System.out.println(s);
}
// retrieve all values
Collection<?> c = m.values();
Iterator<?> i = c.iterator();
while (i.hasNext()) {
BibtexString bs = (BibtexString)i.next();
System.out.println(bs.getContent());
}
}
...
So, aber das Schreiben in eine Datei, das versteh ich noch nicht. Nun gibt es die Methode printBibtex, sowohl beim BibtexFile als auch bei BibtexEntry.
Die Methode über den PrintWriter scheint die einzige Möglichkeit zu sein, Daten wieder auszugeben. Wie kriegt man diese am besten über PrintWriter in eine Datei?
Habe schon im obigen Code in die for-next-Schleife folgendes versucht:
Code:
BibtexFile bibf = new BibtexFile();
bibf.addEntry(entry);
PrintWriter pf = new PrintWriter(new File(bibfile.toString()+"2"));
bibf.printBibtex(pf);
Aber da gibt es angeblich eine Null-Pointer-Exception in der Zeile mit "printBibtex(pf)":
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at bibtex.dom.BibtexFile.printBibtex(BibtexFile.java:135)