Die ATOM-Bibliothek stellt eine Reihe von Basisfunktionen für die Verwendung von ATOM-Feeds bereit. Sie enthält ein Datenmodell für den Zugriff auf die verschiedenen Elemente von ATOM-Feeds und -Einträgen sowie ein Transportobjekt für die verschiedenen Interaktionen mit Servern, das ein Arbeiten sowohl mit Standard-ATOM-Feeds als auch mit dem APP (ATOM Publishing Protocol) ermöglicht.
Weitere Informationen enthalten die Abschnitte zur Atom Syndication Specification und zum Atom Publishing Protocol.
Das Abrufen eines Feed ist einfach. Für alle Serverinteraktionen des Clients wird ein AtomIO-Objekt erstellt. Dies ist das oben erwähnte Transportobjekt, das für die Interaktionen mit dem ATOM-Server zuständig ist. Lassen sie uns mit einer leichten Aufgabe wie dem Abrufen eines Feed beginnen.
Der hier verwendete Feed ist derselbe wie der auf der Seite mit dem Verwendungsbeispiel für Fensterobjekte. Nachfolgend ist der Inhalt dieses Feed als Referenz angegeben.
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xml:lang='en-US'> <title>Example.com</title> <link rel="alternate" type="text/html" href="http://example.com/" hreflang="en" title="Example.com" /> <subtitle type='text'>Example.com's Sample Feed</subtitle> <rights>Copyright Example.com</rights> <id>http://example.com/samplefeed.xml</id> <updated>2007-08-07T20:00:00-05:00</updated> <link rel="self" type="application/atom+xml" href="http://www.example.com/samplefeed.xml"/> <entry> <title>Test Entry #1</title> <id>http://example.com/samplefeed.xml/entry/1</id> <link rel='alternate' href='http://example.com/1.html'/> <summary type='html'> <p>This is a sample entry in our Atom feed. It is simply a large paragraph in the summary.<p> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim.<p> </summary> <author> <name>Test User</name> <email>test@example.com</email> </author> <updated>2007-08-07T04:00:00-05:00</updated> </entry> <entry> <title>Test Entry #2</title> <id>http://example.com/samplefeed.xml/entry/2</id> <link rel='alternate' href='http://example.com/2.html'/> <summary type='text'> This is a sample entry in our Atom feed. It is simply a large paragraph in the summary. This is straight text. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim. </summary> <author> <email>test@example.com</email> </author> <updated>2007-08-07T06:00:00-05:00</updated> </entry> </feed>
Jetzt wollen wir aus diesem Feed mit dem folgenden Code ein Feed-Objekt erstellen:
var _feed = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(feed, domNode){ _feed = feed; } atomIO.getFeed("samplefeed.xml", getComplete);
Dieser Codeblock definiert zunächst eine Variable _feed, erstellt ein AtomIO-Objekt und definiert eine Funktion, die als Callback verwendet werden soll. Dann ruft er die Funktion getFeed für das AtomIO-Objekt auf, um den Feed abzurufen. Die Zeichenfolge "samplefeed.xml" im obigen Codeblock ist der URL für den Feed.
Mit einem Feed-Objekt können Sie jedes Attribut des Feeds (wie Titel, ID, Autoren, Mitwirkende, Aktualisierungsdatum usw.) abrufen. Darüber hinaus können Sie die Einträge unterhalb des Feeds als Array mit Einträgen oder einzeln nach ID abrufen.
function getComplete(/* Atom Feed Object */ feed, /* DOM Node Object */ domNode){ _feed = feed; var id = _feed.id; // id ist jetzt "http://www.onlamp.com/" var title = _feed.title.value; // _feed.title ist ein Objekt ibm_atom.io.atom.Content mit dem // Wert "Example.com" var arrayOfEntries = _feed.entries; // Array mit allen Einträgen. Aktuelle Länge: 3 var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); // Von der gegebenen ID-Zeichenfolge angegebener Eintrag. In diesem Fall // ist es der erste Eintrag im Feed. }
Für ein einzelnes Eintragsobjekt (Entry) können Sie ähnliche Schritte wie für ein Feed-Objekt ausführen. So können Sie unter anderem Titel und ID des Eintrags, das Aktualisierungsdatum usw. abrufen. Die einzige eindeutige Funktion eines Eintragsobjekts ist die Möglichkeit, den Bearbeitungs-URL für diesen Eintrag abzurufen. Diese Funktion ist im folgenden Beispiel gezeigt, da das vorherige Beispiel keine editierbaren Einträge enthält.
function getComplete(feed, domNode){ _feed = feed; var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); var id = specificEntry.id; // ID des Eintrags var title = specificEntry.title.value; // Der Titel des Eintrags ist ein Objekt ibm_atom.io.atom.Content. // Der Textwert ist im Attribut 'value' des Objekts enthalten. var updated = specificEntry.updated; // Aktualisiertes Date-Objekt des Eintrags }
Die übrigen Objekte des Datenmodells wie Autoren (Authors), Mitwirkende (Contributors), Links usw. funktionieren alle ähnlich und haben ihre eigenen Attribute und Funktionen. Weitere Informationen hierzu finden Sie auf der Seite mit den Referenzinformationen.
Das AtomIO-Objekt unterstützt weitere Funktionen für das Zurücksenden von Daten zum Server. Dazu gehört auch der Abruf eines einzelnen Eintrags mit der Funktion getEntry. Normalerweise wird diese Funktion für die Syntaxanalyse eines Dokuments mit ATOM-Einträgen verwendet. Im Zusammenhang mit einem Feed-Dokument gibt sie jedoch den ersten Eintrag dieses Feed zurück.
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* Atom Entry Object */ entry, /* DOM Node Object */ domNode){ _entry = entry; var id = _entry.id; // ID des Eintrags var title = _entry.title.value; // Der Titel des Eintrags ist ein Objekt ibm_atom.io.atom.Content. // Der Textwert ist im Attribut 'value' dieses Objekts enthalten. var updated = _entry.updated; // Aktualisiertes Date-Objekt des Eintrags } atomIO.getEntry("samplefeed.xml", getComplete);
Sie können das AtomIO-Objekt auch verwenden, um aktualisierte Einträge zurück an den Server zu senden. Der entsprechende URL wird aus dem bearbeiteten Eintrag abgerufen. Sehen Sie sich das folgende Beispiel an:
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* Atom Entry Object */ entry, /* DOM Node Object */ domNode){ _entry = entry; _entry.addLink("editURL", "edit"); _entry.title.value = "Test Title!"; function getComplete2(entry2, domNode){} atomIO.updateEntry(_entry, getComplete2); } atomIO.getEntry("samplefeedEdit.xml", getComplete);
Der obige Code wird so, wie er hier angegeben ist, nicht funktionieren. Die Angabe "editURL" muss durch einen gültigen URL ersetzt werden. Außerdem wird ein APP-Server benötigt, der auf die Anforderung antwortet.
Es gibt noch viele Funktionen für das AtomIO-Objekt, die größtenteils jedoch demselben Muster wie die oben dargestellten Funktionen getFeed, getEntry und updateEntry folgen. Details hierzu finden Sie auf der Seite mit den Referenzinformationen.