XMLElement


Viele große Internetportale bieten mittlerweile Programmierschnittstellen, sog. API’s an. Über diese kann man z.B. mit Processing Daten abrufen. Die Daten werden per URL angefordert. Die Antwort kommt meist (nicht immer) per XML-File. XML ist eine Auszeichnungssprache (Extensible Markup Language). Dabei werden die Daten in sog. Tags, ähnlich wie in HTML verpackt.

Um diese Daten verarbeiten zu können, gibt es in Processing Das Objekt XMLElement. In diesem können ganze XML Files gespeichert werden. XMLElement bringt Methoden mit, um einzelne Datensätze auslesen zu können.

Eine Anfrage, wie im Projekt FacebookAnwendung 1 sieht dann z.B. so aus (mit println() ausgelesen):

http://api.facebook.com/restserver.php?api_key=YourAPIKey&call_id=YourAPPID&fields=first_name,last_name,hometown_location,pic&format=XML&method=facebook.Users.getInfo&uids=YourUserID&v=1.0&sig=4c0d5ef0edf23eb16d95ed17e4fab781

Als Antwort schickt Facebook dann die folgende Datei:

<Users_getInfo_response xsi:schemaLocation="http://api.facebook.com/1.0/ 
http://api.facebook.com/1.0/facebook.xsd" list="true">
 <user xmlns="http://api.facebook.com/1.0/">
   <first_name xmlns="http://api.facebook.com/1.0/">YourFirstName</first_name>
   <hometown_location xsi:nil="true"/>
   <last_name xmlns="http://api.facebook.com/1.0/">YourLastName</last_name>
   <pic xmlns="http://api.facebook.com/1.0/">
      
   </pic>
   <uid xmlns="http://api.facebook.com/1.0/">YourUserID</uid>
   </user>
</Users_getInfo_response>

Alle diese Infos zwischen Tags, also <first_name>YourFirstName</first_name> nennt man Elemente. Diese Elemente sind hierarchisch gegliedert, d.h. <user> wäre das Parent Element von <first_name>, <last_name>, <pic>, usw. Diese sind dann also Child-Elemente von <user>. xmlns=“http://api.facebook.com/1.0/&#8220; steckt in einem öffnenden Tag und ist eine sog. Attribut.

Angenommen wir haben die obige Antwort in ein XMLElement myXML gespeichert, so können wir mit folgenden Anweisungen die Daten auslesen:

  • myXML.getChild(„user“)
    gibt das Child-Element von <Users>, also <User> zurück

    • <user xmlns="http://api.facebook.com/1.0/">
         <first_name xmlns="http://api.facebook.com/1.0/">YourFirstName</first_name>
         <hometown_location xsi:nil="true"/>
      <last_name xmlns="http://api.facebook.com/1.0/">YourLastName</last_name>
      <pic xmlns="http://api.facebook.com/1.0/">
      
      </pic>
      <uid xmlns="http://api.facebook.com/1.0/">YourUserID</uid>
      </user>
  • myXML.getChild(„user/first_name“)
    • <first_name xmlns="http://api.facebook.com/1.0/">YourFirstName</first_name>
  • myXML.getChild(„user“).getContent()
    gibt den Inhalt des Elements <User> zurück, in dem Fall leer, also null

    • null
  • myXML.getChild(„user/first_name“).getContent()
    gibt den Inhalt des Elements <First_Name> zurück

    • YourFirsName
  • myXML.getChildren()
    gibt alle Child-Elemente eines Elements als String-Array zurück z.B.:
  • myXML.getChild(„user“).getChildren()
    • [0]   <first_name xmlns="http://api.facebook.com/1.0/">YourFirstName</first_name>
      [1]   <hometown_location xmlns="http://api.facebook.com/1.0/" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      [2]   <last_name xmlns="http://api.facebook.com/1.0/">YourLastName</last_name>
      [3]  <pic xmlns="http://api.facebook.com/1.0/"> 
      http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs272.snc3/23196_YourUserID_7319_s.jpg</pic>
    • [4]   <uid xmlns="http://api.facebook.com/1.0/">YourUID</uid>

Den Content der Elemente kann man entweder als String, oder Array abspeichern und dann im Programm weiterverarbeiten.

Darüber hinaus gibt es auch noch die Möglichkeit selbst XMLElemente zu erstellen. Eine komplette Elementreferenz findet man hier http://processing.googlecode.com/svn/trunk/processing/build/javadoc/core/index.html.

Advertisements

2 Kommentare

  1. Pingback: Processing – Über dieses Weblog « processing – tutorial

  2. Pingback: Geodaten und mehr mit Yahoo Query Language « processing – tutorial

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: