Über dieses Blog...

»Wenn ich einmal alt bin, werde ich nur nörgeln — das wird ein Spaß!«

Tipps und Tricks, aber auch Kritik - breit gefächert von Technik bis hin zum Design, manchmal (oder immer öfter) auch Politik.

Momentaner Fokus: Android/Java, CalDAV, Windows 7 benutzbar machen

Feeds

Interessant gefunden? Mitlesen? Vollständige Beiträge per Feed.

RSS-Feed RSS 2, Atom

Zur Weiterverarbeitung oder zum Einbauen für Ihre Homepage: CSV, JavaScript

Durchsuchen

Tipp: AND & && OR | || XOR - ! NOT ( )

Archiv

Einträge im Februar 2012
MoDiMiDoFrSaSo
12345
6789101112
13141516171819
20212223242526
272829
Beiträge im Archiv zeigen

Java: XML parsen

Für das nächste Experiment hab ich mir einfach mal den Heise Atom-Feed lokal abgespeichert. Ist zwar nicht gerade der beste Feed (nur so ein unbrauchbarer gekürzter), aber immerhin XML :)

Um alles zu kriegen, muss die Ausgabefunktion modifiziert werden:

public static void printObject(Node n, int ebene) {
    NodeList nl = n.getChildNodes();
    int i, j;
    for (i = 0; i < nl.getLength(); i++) {
        n = nl.item(i);
        for (j = 0; j < ebene; j++) System.out.print(„ „);
        System.out.println(n.getNodeName());
        System.out.println(n.getNodeValue());
        printArgs(n);
        printObject(n, ebene+1);
    }
}

Eine XML-Datei in den Parser zu werfen, ist nicht sonderlich schwierig:

public static void main (String args[]) throws Exception {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    
    Document d = db.parse(new File(„c:\\temp\\heise-atom.xml“));
    
    printObject(d, 0);
}

Auf Anhieb hab ich jetzt allerdings keine direkte Möglichkeit gesehen, einfach einen stinknormalen String da reinzubekommen. Mal schauen, vielleicht ist das auch nicht nötig und die HTTP-Anfrage kann per InputStream einfach weitergereicht werden…

Java: XML erzeugen

XML in Java erzeugen erinnert mich irgendwie an JavaScript (zumindest an das JavaScript von XHTML, dieses HTML5-Zeugs erlaubt ja wieder SGML, bin ich drauf gespannt…) Interessant sind die Imports:

import javax.xml.parsers.*;
import org.w3c.dom.*;

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();

Document d = db.newDocument();

Element root = d.createElement(„rootelement“);
root.setAttribute(„attribut", „wert-dazu-mit-&-ampersand“);

d.appendChild(root);

int i;
Element child1, child2;
child2 = root;
for (i = 1; i < 10; i++) {
    child1 = d.createElement(„child“);
    root.appendChild(child1);

    child1 = d.createElement(„child“);
    child2.appendChild(child1);
    child2 = child1;
}

printObject(d, 0);

Die dazugehörige Funktion printObject:

public static void printObject(Node n, int ebene) {
    NodeList nl = n.getChildNodes();
    int i, j;
    for (i = 0; i < nl.getLength(); i++) {
        n = nl.item(i);
        for (j = 0; j < ebene; j++) System.out.print(„ „);
        System.out.println(n.getNodeName());
        printObject(n, ebene+1);
    }
}

An die Attribute kommt man so:

public static void printArgs(Node n) {
    int i;
    NamedNodeMap nnm = n.getAttributes();
    Node na;
    if (nnm == null) return;
    for (i = 0; i < nnm.getLength(); i++) {
        na = nnm.item(i);
        System.out.println(na.getNodeName()+“ = „+na.getNodeValue());
    }
}

Standard beachten und Bugs produzieren...

Nun hat's mich selbst ganz böse erwischt: In der Sidebar steht ganz groß „Vollständige Feeds“ für meine RSS-Feed, und dabei wurde immer was abgeschnippelt. Ist damals beim Testen nicht so aufgefallen, da die Einträge immer kürzer waren. Der Atom-Feed enthielt schon immer die vollständigen Einträge; dem RSS-Feed fehlte bisher der komplette <content:encoded>-Bereich. Außerdem hab ich inzwischen von <author> auf <dc:creator> umgestellt, da ersteres eigentlich eine vollständige Mailadresse erwartet. Und <guid> enthält jetzt den (oder zumindest einen) Perma-Link (Notiz an mich: SEO-Links rein…)

Ach ja, und es gibt noch eine große, wichtige Neuerung: Der Feed wird jetzt visuell komplett korrekt ausgeliefert. Man sieht nun keinerlei BB-Codes mehr, diese sollten eigentlich komplett in HTML geparst werden. Zumindest ist mir kein BB-Code mehr aufgefallen.

Außerdem habe ich rechts die Sidebar leicht aufgeräumt und umgeschlichtet. Dabei ist mir aufgefallen, dass ich das mit meinem CMS doch noch mal überdenken sollte — es ist doch schon wieder sehr viel Gebastel und Gefrickel. Vielleicht mal wirklich ordentlich Software Engineering betreiben, samt Wasserfallmodell und irgendwelchen Anforderungsanalysen, Sequenzdiagrammen etc. — was allerdings die Sache ziemlich verzögern dürfte.

Ansonsten nur noch der Hinweis: Jeder, der bisher gezögert hatte, meinen Feed zu abonnieren, kann sich jetzt nicht mehr rausreden. Sauber, korrekt umgesetzt, vollständige Einträge, interessanter Content (hoffe ich zumindest). Den Rest bitte ich auf diesem Wege, einfach mal einen Kommentar zu diesem Blogeintrag zu posten. Ich wüsste nämlich gerne, wie viele aktive Leser (die sogar Blogeinträge wie diesen lesen) es so ungefähr gibt — vielen Dank schon mal :) Feedback ist natürlich ebenfalls willkommen, ebenso welche Themen ich weglassen soll, von was mehr kommen könnte usw.

Und nun: Let's follow :)

Alle Nachrichten finden Sie im Archiv.

Register