Generierung eines BMEcat XML Kataloges aus CSV Dateien

BMEcat ist ein XML-Standard für die Übertragung elektronischer Produktkataloge. Mit ihm lassen sich Artikeldaten standardisiert speichern und zwischen verschiedenen System übertragen. Entwickelt wird der Standard seit Ende der 90er Jahre vom Fraunhofer IAO Institut in Stuttgart und der Universität Duisburg-Essen.

In einem aktuellen Projekt sollte basierend auf vorhandenen Artikeldaten aus unterschiedlichen Quellen so ein Katalog im BMEcat - Format erstellt werden. Alle Quellen lagen als CSV - Dateien vor und definieren pro Zeile jeweils einen Artikel und seine Eigenschaften. Die Datensätze werden mit Hilfe der Artikelnummer verknüpft, welche als Primärschlüssel dient.

Für die Umsetzung des Projektes habe ich mich gegen verfügbare Softwarepakete entschieden und ein eigenes Programm in Java entwickelt, welches zuerst die Quellen parst und alle vorhandenen Datensätze in internen Datenstrukturen ablegt. Zusätzlich wird eine hierarchische Kategoriestruktur auf den <CATALOG_GROUP_SYSTEM> - Tag umgesetzt. Aus diesen Daten wird dann ein XML-Baum aufgebaut, welcher der Struktur des BMEcat - Formates entspricht. Dafür verwende ich die bereits vor einiger Zeit vorgestellte Klasse XMLTree, mit der so ein Baum aufgebaut und anschließend ausgegeben werden kann.

Eine Besonderheit stellt die Behandlung der Bilder dar: In den Quelldaten werden diese mit ihren URLs definiert. Im Zielkatalog können aber nur die Dateinamen der Bilder angegeben werden, da beim Upload des Kataloges immer auch das Bildmaterial mit hochgeladen werden muss. Diese Einschränkung ist durch das Zielsystem vorgegeben. Der BMEcat Standard sieht durchaus vor, dass Bilder relativ zu einem Rootverzeichnis angegeben werden. Allerdings kann das Zielsystem die Bilder nicht selbständig herunterladen und erwartet sie stattdessen in einem Verzeichnis auf dem FTP-Server. Deshalb speichere ich beim Verarbeiten der Bilder die URLs in einer Liste zwischen und übergebe diese anschließend an ein Unterprogramm, welches alle Bilder nacheinander herunterlädt und sie in einem Ordner ablegt. Dieser kann dann zusammen mit dem XML-Katalog per FTP übertragen werden.

Die Vorteile einer Eigenentwicklung im Vergleich zu einer fertigen Lösungen waren bei diesem Projekt klar zu erkennen: Ein eigenes Programm bietet volle Flexibilität was das Einbinden bestehender Quelldaten angeht. In der Firma gab es bereits hochwertige Artikeldaten inkl. Kategorieinformationen, welche natürlich weiter verwendet werden sollten. Außerdem konnte nur so die Besonderheit bei den Bildern effizient gelöst werden. Ein fertiges Programm hätte hier viel zu viel manuelle Sortier- und Nacharbeit verlangt, was schlussendlich in Verbindung mit dem Anschaffungspreis deutlich teurer geworden wäre.

Haben auch Sie Interesse an einer individuellen Lösung zur Erstellung eines BMEcat Kataloges basierend auf Ihren Artikeldaten? Kontaktieren Sie mich für eine unverbindliche Anfrage.

Geschrieben am 13.08.2008 von Stefan Schlichthärle | Kommentar hinzufügen | Tags: Projekte XML Java E-Business BMEcat

Suchmaschinenoptimierung für die lokale Suche

Das Internet wird immer mehr die erste Anlaufstelle für Informationsgewinnung jeglicher Art. Eine zentrale Rolle nehmen hierbei die Suchmaschinen ein, welche in Sekunden zu jedem Stichwort zahlreiche Treffer auflisten. Wer bei populären Suchbegriffen an erster Stelle der Ergebnisliste steht, kann sich über hohe Besucherzahlen und viele abgeschlossene Geschäfte freuen. Dementsprechend sind die hochwertigen Keywords hart umkämpft, Suchmaschinenoptimierer arbeiten mit allen Tricks, um ihre Seiten ganz vorn zu platzieren.

Auch die lokal beschränkte Suche gewinnt dabei immer mehr an Bedeutung. Um ein Produkt oder einen Händler in der nächsten Stadt zu finden werden nicht mehr umständlich das Branchenbuch oder die gelben Seiten gewälzt, sondern die gewünschte "Sache" und der zugehörige Städtenamen einfach in die Suchmaschine eingetippt. Dieser Trend wird sich noch weiter verstärken, wenn in den nächsten Jahren das Internet auf dem Handy ständig und ohne Verzögerung präsent sein wird.

Für Händler und Dienstleister, welche ihr Angebot vorwiegend in einer Stadt oder Region lokal beschränkt anbieten, ist dies eine nicht zu unterschätzende Möglichkeit zur (Neu-)Kundengewinnung. Der Kunde äußert durch die Suche bereits sein Interesse und möchte nun weiterführende Informationen. Wer sie bereitstellen kann, also vom Kunden gefunden wird, hat bereits den ersten Schritt zum Geschäftsabschluss geleistet.

An dieser Stelle kann Suchmaschinenoptimierung helfen. Exemplarisch möchte ich an dieser Stelle mein letztes Projekt anführen: Für eine Naturheilpraxis wurde eine Homepage erstellt. Die Zielgruppe der Praxis sind Patienten aus der näheren Umgebung, welche sich für naturheilkundliche Behandlung interessieren. Die Seite sollte also bei Eingabe der angebotenen Therapiemaßnahmen in Verbindung mit der örtlichen Stadt auf der ersten Trefferseite auftauchen. Und das ist auch gelungen, was die folgenden Suchanfragen belegen:

Keyword
Keyword
Keyword

Die Klientin spart sich durch ihre Investition in eine suchmaschinenfreundliche Homepage dauerhafte Werbeausgaben für Keywordmarketing, mit denen sich primäre Suchtreffer auch kaufen lassen. Die Kosten dafür sind aber nicht zu unterschätzen, vor allem aus ROI-Gesichtspunkten: Bezahlt wird meist pro Klick, also kostet jeder Seitenbesucher Geld. Bei weitem nicht jeder Besucher führt aber auch einen Kauf durch bzw. nimmt die Dienstleistung in Anspruch. Gute Positionierung in den regulären Suchtreffern ist also auf Dauer deutlich günstiger.

Erreicht wurde die gute Platzierung durch konsequente OnPage-Optimierung: Titel, Description und URLs sind angepasst an den Content und verbinden die Behandlungsmethode mit dem Ortsbezug. So stellt auch Google diese Verknüpfung her und rankt die Treffer entsprechend.

Haben auch Sie Interesse an der Optimierung Ihrer Homepage für die Lokale Suche? Kontaktieren Sie mich für eine unverbindliche Anfrage.

Geschrieben am 13.03.2008 von Stefan Schlichthärle | Kommentar hinzufügen | Tags: Webdesign Projekte Referenzen SEO Google

www.naturheilpraxis-bihlafingen.de

Naturheilpraxis Bihlafingen

Die Naturheilpraxis Bihlafingen bietet ihren Kunden ein breites Angebot an gesundheitlichen Therapien für das persönliche Wohlbefinden. Spezialisiert ist Inhaberin Barbara Klingler-Volswinkler auf die japanische Meridian-Shiatsu Fingerdruckbehandlung. Aber auch andere Behandlungsformen sowie Angebote für Gruppen kommen nicht zu kurz.

Neben Informationen zu den einzelnen Therapieformen sind auf der Homepage auch aktuelle Termininfos zu finden. Für deren Aktualisierung steht ein spezielles Admin-Menü bereit, welches einfaches Hinzufügen und Editieren der News erlaubt. Technisch wird die Editierbarkeit der News mit AJAX realisiert. Weitere Web2.0 Gimmicks finden sich auch im öffentlichen Teil der Seite: Infotexte werden bei Bedarf animiert eingeblendet und sorgen so für eine frische Optik.

Geschrieben am 18.02.2008 von Stefan Schlichthärle | Kommentar hinzufügen | Tags: Webdesign Projekte Ajax Referenzen

XML - Dateien generieren mit Java

XML gehört mittlerweile nicht nur im Internet zu den wichtigsten Datenaustauschformaten. Die klare maschinenlesbare Struktur einerseits und gleichzeitig der Vorteil, dass sich bei Bedarf auch der Anwender direkt einen Überblick verschaffen kann, haben wesentlich zur hohen Verbreitung des Formates beigetragen.

Zur Generierung von XML-Dateien bzw. zum Speichern der in ihnen abgelegten Daten eignen sich Bäume optimal. Jeder Knoten stellt dabei einen Tag dar, welcher entweder einen Wert beinhaltet oder aber beliebig viele Nachfolger. Zusätzlich kann jeder Tag n Attribute haben. Nachfolger und Attribute realisiert man am Besten mit Hilfe von Listen, da so das Hinzufügen von n Elementen keine Probleme bzgl. maximaler Länge macht.

Die Klasse für so einen Knoten könnte folgendermaßen implementiert werden:

class Knoten
{
   XMLTagsListe nachfolger;
   XMLAttributeListe a;
   String tag;
   String wert;

   void AddNachfolger(Knoten k);
   void AddAttribut(String attribut, String wert);
   void AddWert(String wert);
}

XMLTagsListe und XMLAttributeListe sind Listen, deren Elemente auf die Nachfolger des Knotens bzw. auf Objekte zeigen, welche die Attribute (Name und Wert) abspeichern.

Zum Ausdrucken der XML-Datei mit den im Baum gespeicherten Daten eignet sich ein an den Pre-Order-Tiefendurchlauf angelehnter Durchlauf. Beim Eintritt in den Knoten wird zuerst der Tag ausgegeben, anschließend eventuell vorhandene Attribute. Falls es Nachfolger gibt, wird die Liste der Nachfolger mit einer While-Schleife durchlaufen und für jeden Knoten wieder die Print - Methode rekursiv aufgerufen. Falls es keine Nachfolger gibt wird der gespeicherte Wert ausgegeben. Beim Verlassen des Knotens folgt dann die Ausgabe zum Schließen des Tags. So ergibt sich dann rekursiv das komplette XML-Dokument, welches die gespeicherten Daten repräsentiert.

Das Einfügen eines neuen Tags in den Baum ist (noch) nicht elegant. Da der Baum keinerlei Sortierung aufweist weiß die Klasse beim Hinzufügen natürlich nicht, wo der neue Tag eingefügt werden soll. Der Add - Routine muss also der Elternknoten mitgegeben werden. Das verlangt vom Programmierer eine eigene Datenhaltung für Verweise in den Baum, um neue Tags an der richtigen Stelle einfügen zu können.

Eine erste Version der Java-Klasse zum Verwalten von XML-Daten in Bäumen kann hier heruntergeladen werden: XMLTree.java

Geschrieben am 24.03.2007 von Stefan Schlichthärle | Kommentar hinzufügen | Tags: Java Programmieren Projekte

Google Kalender: iCal - Export mit Umlauten

Der Kalender im Web erfreut sich immer größerer Beliebtheit. Nur so kann man seine Termine zentral an einem Ort verwalten und auch von unterwegs darauf zugreifen. Gerade zuhause möchte man aber nicht immer den Browser öffnen müssen. Hier helfen clevere Widgets, welche die wichtigsten Termine direkt auf den Desktop bringen. Für die Yahoo Widget Engine gibt es eine schicke Erweiterung, welche in Zusammenarbeit mit dem Google Kalender aktuelle Termine anzeigt und auch das Anlegen eines neuen Events erlaubt.

Zur Datensynchronisation verwendet das Widget den iCal-Export. Google stellt die Termindaten in diesem standardisierten Format zur Verfügung. Allerdings werden in diesem Format die Umlaute nicht richtig übertragen, an Stelle von ä und ö stellt das Widget nur unbekannte Zeichen dar. Wer Zugriff auf PHP - fähigen Webspace hat kann dieses Problem aber schnell lösen.

Ein kleines Skript liest beim Aufruf die aktuellen Termine vom Google Kalender aus und ersetzt alle falschen Zeichen mit den richtigen Umlauten. Dann gibt es den neuen Text einfach mit echo aus. Im Widget werden nun als Quellpfade die URLs zum PHP - Skript hinterlegt. Das funktioniert natürlich mit allen Programmen und Tools, welche auf den iCal - Export vom Kalender zugreifen wollen.

Zum Zugriff auf die iCal - URLs kann die Funktion file_get_contents("url") verwendet werden. Sollte das nicht funktionieren ist wahrscheinlich der Zugriff auf externe URLs in den PHP - Einstellungen deaktiviert. Auskunft darüber gibt phpinfo() (allow_url_fopen muss aktiviert sein). file_get_contents() gibt den Inhalt aus "url" als String zurück. Mit diesem String können dann die normalen Operationen zum Suchen und Ersetzen durchgeführt werden.

Geschrieben am 05.10.2006 von Stefan Schlichthärle | Kommentar hinzufügen | Tags: PHP Google Widgets Internet Projekte Tool

Flickr - API kreativ nutzen

Flickr gehört zu den größten Bilderseiten im Internet. Jeder kann dort seine Fotos hochladen und mit der Welt teilen. Neben dem Content überzeugt die Seite auch durch gutes Webdesign, Stichwort Web2.0. Für Webmaster ist vor allem die mächtige API interessant, welche freien Zugriff auf den Datenbestand erlaubt.

Schon länger habe ich ein wenig mit dieser API experimentiert und dabei ein Memoryspiel geschrieben, welches aktuelle Fotos vom Flickr holt und neu aufbereitet. Für die Effekte und Animationen ist die Yahoo User Library zuständig. Mit PHP werden die aktuellsten Fotos geladen, verarbeitet und auf dem Spielfeld aufbereitet. Das eigentliche Spiel und die Userinteraktion ist dann mit Javascript umgesetzt.

Flickr - Memory

Geschrieben am 29.08.2006 von Stefan Schlichthärle | Kommentar hinzufügen | Tags: Flickr Projekte Web20 Linktipp