---
title: "Verarbeitung der Groupon-API mit MapForce – Teil 2"
date: "2011-08-16"
categories: 
  - "data-integration"
tags: 
  - "altova-xmlspy"
  - "data-integration"
  - "data-mapping"
  - "mapforce"
  - "missionkit"
  - "xml-editor"
  - "xml-schema"
  - "xmlspy"
description: Erfahren Sie, wie Sie die Groupon-API mit Altova MapForce effektiv nutzen können, einschließlich dynamischer Datenzuordnungen, der Ausführung von Abfragen und Strategien zur Filterung der Ausgabedaten.
---
Status: #blog

Tags:  #altova-xmlspy #data-integration #data-mapping #mapforce #missionkit #xml-editor #xml-schema #xmlspy

Categories: [data-integration](/blog/de/category/data-integration.md)
# Verarbeitung der Groupon-API mit MapForce – Teil 2

In [Teil 1 dieser Reihe](https://www.altova.com/blog/2011/08/processing-groupon-api-with-altova.html) haben wir beschrieben, wie man [Altova MapForce](https://www.altova.com/de/mapforce.html) mit der Groupon-API verbindet. Wir haben die API nach einer Liste der Groupon-Unterabteilungen abgefragt und diese Liste dann verwendet, um API-Anfragen für alle aktuellen Angebote aus jeder Unterabteilung zu erstellen. In diesem Teil werden wir die "/deals"-Anfragen ausführen und die Antwort filtern, um die interessantesten Daten zu erhalten. Die Liste der "/deals"-Anfragen, die wir zuvor erstellt haben, sieht wie folgt aus: 

[![Liste der Anfragen zu Groupon-Angeboten, die von Altova MapForce generiert wurden](https://lh3.ggpht.com/-DuCz6NmnbUQ/Tkkced-kKNI/AAAAAAAAAdc/6GOLTV7epMk/clip_image001_thumb.png?imgmax=800 "List of Groupon /deals queries generated by Altova MapForce")](http://lh3.ggpht.com/-2Z-nwIU-LKI/TkkceMyFDeI/AAAAAAAAAdY/kDFXB-IdDhw/s1600-h/clip_image0013.png) 

Um alle Anfragen zu verarbeiten, können wir die Liste als dynamische Datei in eine neue Mapping-Komponente einlesen. Als wir das letzte Mal eine neue Komponente benötigten, haben wir eine API-/Abteilung-Anfrage in das Mapping eingefügt und MapForce automatisch ein XML-Schema erstellen lassen. Wir könnten hier das Gleiche tun, indem wir eine API-/Angebots-Anfrage als XML-Eingabedatei einfügen. Es gibt jedoch ein kleines Problem: Obwohl die Online-Dokumentation der Groupon-API die Abfragen, die wir stellen können, klar beschreibt, ist sie vage, wenn es um die Informationen geht, die zurückgegeben werden. Bevor wir Dutzende von Anfragen an die API für alle aktuellen Angebote senden, möchten wir wahrscheinlich etwas mehr über die Daten wissen, die zurückkommen werden. 

**Lassen Sie uns einen Deal machen** 

Wie Yogi Berra sagte, kann man viel beobachten, indem man einfach nur schaut. Beginnen wir damit, eine Anfrage für "/deals" in [XMLSpy](https://www.altova.com/de/xmlspy.html) auszuführen. Dadurch können wir die Antwort auf eine Anfrage für eine einzelne Abteilung prüfen, bevor wir eine potenziell große Datenmenge abrufen. Das Menü "Datei / Öffnen" in XMLSpy enthält die gleiche Option "Auf URL umschalten", die wir in MapForce im vorherigen Beitrag verwendet haben. Wenn wir die API-Anfrage "/deals" für eine Abteilung eingeben, die ein großes Ballungsgebiet abdeckt – beispielsweise Dallas –, erhalten wir wahrscheinlich genügend "deals"-Einträge, um die Eigenschaften des gesamten Datensatzes zu ermitteln. XMLSpy öffnet die Antwort auf die API-Anfrage "/deals" im Textmodus, genau wie wenn wir eine lokale Datei öffnen würden: 

[![Beispiel aus einer Antwort auf eine Anfrage zu Groupon/Angeboten, dargestellt in XMLSpy](https://lh5.ggpht.com/-yuh3IG08N-M/TkkceylAHBI/AAAAAAAAAdk/v85ydqJD_IY/clip_image002_thumb.png?imgmax=800 "Response to a Groupon /deals query, shown in XMLSpy")](http://lh6.ggpht.com/-Eb1X5J799Yo/Tkkce1ixmfI/AAAAAAAAAdg/8gDhEldnKco/s1600-h/clip_image0023.png) 

Wie erwartet, haben wir eine große Menge an Daten erhalten, als wir alle Transaktionen für eine einzelne Abteilung angefordert haben! Eine schnelle Möglichkeit, die Struktur dieser Daten zu analysieren, ist die Verwendung der Menüoption "XMLSpy DTD / Schema", um eine .xsd-Datei aus der XML-Datei zu generieren. Im Folgenden ist eine vereinfachte Darstellung der gesamten generierten .xsd-Datei dargestellt, basierend auf der Antwort auf die Anfrage "/deals" für Dallas: 

[![Eine XSD-Datei, die von XMLSpy aus der Groupon-Abfrage generiert wurde](https://lh5.ggpht.com/-kphWHOIh5FY/Tkkcfq0x1rI/AAAAAAAAAds/wP2tm-rh3sU/clip_image004_thumb.jpg?imgmax=800 "An XML Schema generated by XMLSpy from the Groupon query")](http://lh5.ggpht.com/-nFAolywZOlU/TkkcfVfixfI/AAAAAAAAAdo/ixbMzb4FjMM/s1600-h/clip_image0043.jpg) 

Wir können noch tiefer eintauchen, indem wir Yogis Ratschlag befolgen, als ob wir das alles schon einmal gesehen hätten. Wenn wir alle Elemente des XML-Schemas genauer untersuchen, zeigen sich einige interessante Anomalien. Zum Beispiel gibt es zwei Elemente mit dem Namen "redemptionLocation", die jedoch unterschiedliche Definitionen haben. Das erste Element enthält eine Sequenz von Unterelementen: 

[![Erste Verwendung des Elements "Erlösungsort"](https://lh3.ggpht.com/-3_iJQ8vMJv4/TkkcgPTVebI/AAAAAAAAAd0/H5Y0Y4UhYag/clip_image005_thumb.png?imgmax=800 "First use of the remdemptionLocation element")](http://lh5.ggpht.com/-Ds65S--pYGo/Tkkcf6t47qI/AAAAAAAAAdw/ctfBMJDvkSI/s1600-h/clip_image0053.png) 

Und das zweite Element wird als eine einfache Zeichenkette definiert: 

[![Zweite Verwendung des Elements "Einlösungsort"](https://lh5.ggpht.com/-0f6ygtVStac/TkkcgsChc0I/AAAAAAAAAd8/kP4MfwN-nbo/clip_image006_thumb.png?imgmax=800 "Second use of the remdemptionLocation element")](http://lh6.ggpht.com/-TnjeC_B-xwo/TkkcgaD3N4I/AAAAAAAAAd4/QPsqdCH3_G8/s1600-h/clip_image0063.png) 

Wenn man in den XML-Daten für Dallas nachsieht und nach dem Feld "redemptionLocation" sucht, werden folgende Beispiele angezeigt: 

[![Ein Beispiel für Wiedergutmachung](https://lh3.ggpht.com/-_jeVWegS2_E/TkkchCwxMBI/AAAAAAAAAeE/-WTenar_XWk/clip_image007_thumb.png?imgmax=800 "One example of redemptionLocation in the body of the response")](http://lh6.ggpht.com/-u8aUGljt0ak/Tkkcgyld0pI/AAAAAAAAAeA/BZPUZ9pzTvM/s1600-h/clip_image0073.png) 

Und: 

[![Ein Beispiel für Wiedergutmachung](https://lh4.ggpht.com/-NmUZPlUkkZI/TkkchXZRqgI/AAAAAAAAAeM/PCRMkYPZYgE/clip_image008_thumb.png?imgmax=800 "One example of redemptionLocation in the body of the response")](http://lh6.ggpht.com/-0qhiOg-24LI/TkkchKG4nOI/AAAAAAAAAeI/LP_XSf5LwCM/s1600-h/clip_image0083.png) 

Und:

[![Ein Beispiel für Wiedergutmachung](https://lh3.ggpht.com/-NwOgfSsxWmo/Tkkch7Nu2_I/AAAAAAAAAeU/DxwKHSBh6i8/clip_image009_thumb.png?imgmax=800 "One example of redemptionLocation in the body of the response")](http://lh4.ggpht.com/-ZPjMwCObxk0/TkkchpHYZiI/AAAAAAAAAeQ/wlLAu6yhnyY/s1600-h/clip_image0093.png) 

Das ist wirklich interessant, denn redemptionLocation = "online" identifiziert Angebote, die überall eingelöst werden können, anstatt dass man dafür eine Filiale des jeweiligen Unternehmens besuchen muss, wo das Angebot beworben wird. Was wäre, wenn wir die /deals-API-Abfragen für alle Bereiche durchführen und eine Liste aller Online-Angebote extrahieren würden? Das wäre eine extrem umfangreiche Groupon-Plattform!

**Nur das Abfragen, was benötigt wird**
Die Groupon-/deals-API-Abfrage unterstützt einen optionalen Parameter namens &show=, mit dem Benutzer die zurückgegebenen Daten einschränken können. Durch die Verwendung dieses Parameters kann Bandbreite gespart und die Verarbeitungszeit für die Datenumwandlung reduziert werden, indem unerwünschte Daten aus der API-Antwort entfernt werden. Wir können auch unser Endergebnis vereinfachen, indem wir nur die interessantesten Informationen einbeziehen, einschließlich des Links zur Groupon-Webseite für jedes Angebot. Nachdem wir unerwünschte Elemente aus dem generierten Dallas-Schema entfernt haben, sieht unsere endgültige Version für die Zusammenfassung der Online-Angebote wie folgt aus: 

[![XMLSpy-Schema-Diagramm der vereinfachten Groupon-XSD-Datei](https://lh4.ggpht.com/-iwVlq7FJKaI/TkkciR_RWlI/AAAAAAAAAec/40tefse9cdU/clip_image010_thumb.png?imgmax=800 "XMLSpy Schema diagram of the simplified Groupon xsd file")](http://lh3.ggpht.com/-lj5Ou5l1F2I/TkkciBixtCI/AAAAAAAAAeY/ZPWD35XiU1Q/s1600-h/clip_image0103.png) 

Wenn wir den Parameter "&show=" zu unserer MapForce-Zuordnung hinzufügen, um nur die Elemente anzufordern, die im vereinfachten XML-Schema enthalten sind, sehen die Abfragen wie folgt aus:

[![Geänderte Liste von Suchanfragen mit dem Parameter "&show="](https://lh6.ggpht.com/-U_NgQfTyMSI/Tkkci5k9peI/AAAAAAAAAek/a_K8X4pljQ8/clip_image011_thumb.png?imgmax=800 "Modified list of queries with the &show= parameter")](http://lh5.ggpht.com/-k15Fug8YlDM/TkkciuNh8TI/AAAAAAAAAeg/z-vZ8UXA9uE/s1600-h/clip_image0113.png) 

Jetzt können wir die überarbeitete .xsd-Datei in die Zuordnung einfügen und die Liste der API-/Deal-Abfragen als dynamische Eingabe verbinden. Wir müssen die Textdatei, die wir zur Sammlung der Abfragen verwendet haben, nicht löschen – sie könnte in Zukunft noch für die Fehlersuche nützlich sein. 

[![Dynamische Zuordnung von Eingabedateien in Mapforce](https://lh5.ggpht.com/-1UHiT_Wo7wk/TkkcjQ4eRUI/AAAAAAAAAes/cIED363B0lM/clip_image012_thumb.png?imgmax=800 "Mapforce dynamic input file mapping")](http://lh5.ggpht.com/-yVH1tV-Hxww/TkkcjLLDrYI/AAAAAAAAAeo/kjoWneA91N8/s1600-h/clip_image0123.png) 

Diese Änderungen vervollständigen den Bereich der Dateneingabe im Datenmapping-Prozess. 

**Festlegung der Ausgabe der Datentransformation** 

Zurück in XMLSpy können wir noch einige weitere Anpassungen am Eingabe-XML-Schema vornehmen, um eine neue Version für die Ausgabe zu erstellen: 

[![XMLSpy-Schema-Diagramm für die Ausgabedatei "xsd"](https://lh4.ggpht.com/-Ay_3WyFqFA8/Tkkcj1lL4eI/AAAAAAAAAe0/MbDOLQIx_eY/clip_image013_thumb.png?imgmax=800 "XMLSpy schema diagram of the output file xsd")](http://lh3.ggpht.com/-GpaXSUZ0Rvc/TkkcjsBzMVI/AAAAAAAAAew/8C0GzH_Y22A/s1600-h/clip_image0133.png) 

Wir haben das Antwortelement entfernt, da es keinen Mehrwert bietet, und das Element "RedemptionLocation" eliminiert, das wir nicht in der Ausgabe enthalten möchten. Außerdem haben wir ein Datumsfeld für einen Zeitstempel hinzugefügt, da unsere Ausgabedatei eine Momentaufnahme von Daten darstellen wird, die sich ständig ändern. 

Nachdem wir diese Version der .xsd-Datei in XMLSpy gespeichert haben, können wir sie in die MapForce-Zuordnung einfügen. Im Folgenden ist die Ausgabeseite der Zuordnung dargestellt, wobei der Ausgabekomponente teilweise verbunden ist. Der Filter oben liest das Element "redemptionLocation", um nur Online-Angebote auszuwählen, und die Funktion "now" fügt das aktuelle Datum ein:

[![Teilansicht der Zuordnungen in der Ausgabedatei von MapForce](https://lh3.ggpht.com/-dCMzbcgoV7o/TkkckSog8tI/AAAAAAAAAe8/E3WXT_hufz0/clip_image014_thumb.png?imgmax=800 "Partial view of the MapForce output file mapping")](http://lh4.ggpht.com/-Bw3lJz0IGRY/TkkckIAeytI/AAAAAAAAAe4/wRJ4iBcFJVY/s1600-h/clip_image0143.png) 

Die letzte Änderung, die wir am XML-Schema für die Ausgabe vorgenommen haben, bestand darin, einige Elementtypen von "dateTime", "Boolean" und "Integer" in den String-Datentyp zu ändern, um längere, beschreibende Texte zu ermöglichen. Hier ist die vollständige Definition der Zuordnung mit den endgültigen Verbindungen zum Ausgabekomponenten: 

[![Datenmapping mit Mapforce für die Groupon-API](https://lh4.ggpht.com/-nqTnqO-22FQ/Tkkck9jjGMI/AAAAAAAAAfE/S98nV4FP7uE/clip_image015_thumb.png?imgmax=800 "Mapforce data mapping for the Groupon API")](http://lh5.ggpht.com/-Pb7a5H2UpFs/TkkcknIB9_I/AAAAAAAAAfA/rsYL1Q1NHUk/s1600-h/clip_image0153.png) 

**Jetzt kommt der entscheidende Punkt** 

Wenn wir auf die Schaltfläche "Ausgabe" klicken, verarbeitet MapForce die gesamte Transformation von Anfang bis Ende mithilfe der integrierten Ausführungskomponente von MapForce. Hier ist eine Aufschlüsselung der einzelnen Schritte:

- Führen Sie die Abfrage "/divisions" aus, um die aktuelle Liste der Abteilungen abzurufen
- Verketten Sie Zeichenketten, um die Liste der Suchanfragen für "/deals" für alle Abteilungen zu erstellen
- Führen Sie die Abfragen unter `/deals` aus, um dynamische Daten für das Eingabefeld zu generieren
- Filtern Sie die Online-Angebote, um das Ausgabekomponente zu erstellen, führen Sie die restlichen Zuordnungsfunktionen aus und fügen Sie den Zeitstempel hinzu, nachdem alle Angebote verarbeitet wurden

MapForce benötigt nur wenige Sekunden, um alle diese Schritte auszuführen und eine Ausgabedatei mit einer Reihe von Datensätzen zu erstellen, die wie folgt aussehen: 

[![Ausgabedaten der Datenmapping-Konfiguration in MapForce für die Groupon-API](https://lh5.ggpht.com/-nLw5_EH7G-c/TkkclUU6KzI/AAAAAAAAAfM/_GNvvf-Mlqc/clip_image016_thumb.png?imgmax=800 "Output data from the MapForce mapping for the Groupon API")](http://lh6.ggpht.com/-GkEs7wJOvcs/TkkclJCUb0I/AAAAAAAAAfI/eXjcgRriFbY/s1600-h/clip_image0163.png)

Im dritten Teil dieser Reihe werden wir ein Stylesheet entwerfen, das die XML-Ausgabe unserer Anwendung automatisch in HTML umwandelt, um eine ansprechende Darstellung in Webbrowsern und auf mobilen Geräten zu ermöglichen. Bis bald auf dem Baseballfeld, Yogi! 

XMLSpy und MapForce sind zusammen im speziell preisgünstigen Altova MissionKit erhältlich. Überzeugen Sie sich selbst, wie einfach es ist, das MissionKit zu nutzen, um Daten von einer Web-API zu konvertieren – [laden Sie eine kostenlose 30-Tage-Testversion herunter!](https://www.altova.com/de/download/missionkit/software_development_tools_enterprise.html) 

**Anmerkung des Herausgebers:** Unsere ursprüngliche Serie über die Verarbeitung von Daten aus der Groupon-API wurde in drei Teilen veröffentlicht. Sie können die einzelnen Teile über die folgenden Links einsehen: Teil 1, "[Verarbeitung der Groupon-API mit Altova MapForce](https://www.altova.com/blog/2011/08/processing-groupon-api-with-altova.html)", beschreibt, wie man dynamische Eingaben erstellt, indem man Daten von mehreren URLs sammelt. Teil [Verarbeitung der Groupon-API mit MapForce – Teil 2](https://www.altova.com/blog/2011/08/processing-groupon-api-with-mapforce.html) beschreibt, wie wir Daten aus der API gefiltert und die Ausgabe definiert haben, um nur die interessantesten Details zu extrahieren. Teil [Verarbeitung der Groupon-API – Teil 3](https://www.altova.com/blog/2011/08/processing-groupon-api-part-3.html) beschreibt, wie die Ausgabe als ein einzelnes HTML-Dokument formatiert wurde, das für Desktop- und mobile Geräte optimiert ist, und gibt einen Überblick über Möglichkeiten zur Automatisierung wiederholter Ausführungen.
