[Gelöst] Umwandlung XML -> Date

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

[Gelöst] Umwandlung XML -> Date

Beitrag von homtata »

Hallo,

ich steh auf dem Schlauch. Ich habe aus der Datenbank einen Eintrag im XML-Format, der ein Datum repräsentiert, das ich über CMS_DATE eingegeben habe. In der Datenbank steht z.B.

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?>
<date><timestamp><![CDATA[1380442920]]></timestamp><format><![CDATA[{"dateFormat":"d/F/Y","timeFormat":""}]]></format></date>
Nun muss ich das in ein valides Datum zurückwandeln und dachte: die Klasse cContentTypeDate kann ja angeblich rawsettings einlesen und umwandeln. Hm. Aber die bloße Neuinstanzierung, egal wie, bringt meine Seite schon zum Absturz, egal, was ich eingebe, hier ein paar Varianten:

Code: Alles auswählen

$thisdate  = new cContentTypeDate($databasevalue);
$thisdate  = new cContentTypeDate(5);
$thisdate  = new cContentTypeDate();
****** Edit:
20.09.2013: Lösung in einem Post weiter hinten.
Zuletzt geändert von homtata am Fr 20. Sep 2013, 23:02, insgesamt 1-mal geändert.
frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: Brauche Hilfe: Umwandlung XML -> Date

Beitrag von frederic.schneider_4fb »

Du kannst die Klasse cContentTypeDate ja nur initialisieren, wenn auch die Klasse "cContentTypeAbstract" vollständig geladen werden konnte. Siehe Zeile 25 in der Datei "class.content.type.date.php". Ansonsten: Was sagt denn die Fehlerlog?
Frederic Schneider
Entwickler bei der four for business AG
Faar
Beiträge: 1951
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 15 Mal
Kontaktdaten:

Re: Brauche Hilfe: Umwandlung XML -> Date

Beitrag von Faar »

homtata hat geschrieben:

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?>
<date><timestamp><![CDATA[1380442920]]></timestamp><format><![CDATA[{"dateFormat":"d/F/Y","timeFormat":""}]]></format></date>
Nun muss ich das in ein valides Datum zurückwandeln
Du könntest selbst etwas mit simplexml zusammenbauen:
http://www.php.net/manual/de/simplexml. ... -basic.php

Dann nimmst du simplexml_load_string() ...
http://www.php.net/manual/de/function.s ... string.php
... und benützst als Libxml-Parameter das hier: LIBXML_NOCDATA
http://www.php.net/manual/de/libxml.constants.php

Damit müsste dann ein echo $xml->date[0]->timestamp; eigentlich bereits ein Ergebnis bringen.
Und wenn du mit dieser Methode beides hast, also Unix-Timestamp und DateFormat, kannst du mit den üblichen PHP-Datumsverarbeitungen das in eine ordentliche Ausgabe verwandeln.
Sollte fast gehen.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Brauche Hilfe: Umwandlung XML -> Date

Beitrag von homtata »

Ich werde mich nochmal dransetzen. Eigentlich hatte ich ja gedacht, sowas geht recht easy, weil die ganze Chose ja auch verwendet wird für cms_date, und ich müsste jetzt nur sagen "nimm den XML-String und wandle den mit function xy um in ein Datum". Ich meld mich ;-)
Faar
Beiträge: 1951
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 15 Mal
Kontaktdaten:

Re: Brauche Hilfe: Umwandlung XML -> Date

Beitrag von Faar »

Im Prinzip geht das auch so leicht mit simple_xml.

In anderen Projekten (native, nicht CMS) hatte ich öfter mal XML Anfragen oder Rückgaben, nur bisher halt immer ohne CDATA.
Wenn es dann mal lief, war es wirklich so leicht wie beschrieben.

Und eine Funktion die das Datum formatiert, könnte dann die Ausgabe übernehmen.
Irgendwo hatte ich noch solche Funktionen rumliegen, weiß aber nicht mehr wo (müsste ich länger suchen).
Aber in php.net gibts auch Beschreibungen dafür.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Brauche Hilfe: Umwandlung XML -> Date

Beitrag von homtata »

Lieber Faar,

herzlichsten Dank! Es hat dann zwar noch einige Versuche und Flüche gebraucht, aber nun hab ichs...

In der Datenbank landet wie oben schon geschrieben folgendes XML - es ist das im Feld "value" gespeicherte Gegenstück zu CMS_Date (= CMS-Typ 19):

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?>
<date><timestamp><![CDATA[1380442920]]></timestamp><format><![CDATA[{"dateFormat":"d/F/Y","timeFormat":""}]]></format></date>
Das krieg ich dann umgewandelt mit folgenden Zeilen:

Code: Alles auswählen

$dom = new domDocument;
$dom->loadXML($db->f('value'));
$xml = simplexml_import_dom($dom);
$date_Ymd  = date('Y-m-d',  (int)$xml->timestamp);
Das ist mal ein schöner Wochenausklang...

LG
Viktor
Faar
Beiträge: 1951
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 15 Mal
Kontaktdaten:

Re: [Gelöst] Umwandlung XML -> Date

Beitrag von Faar »

Das sind angenehm wenig Zeilen und doch etwas anders als ich es kenne.
Freut mich dass es klappt, muss ich mir für später merken.

VG,
Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
dominik.ziegler
Beiträge: 437
Registriert: Do 19. Jun 2008, 09:09

Re: [Gelöst] Umwandlung XML -> Date

Beitrag von dominik.ziegler »

Es würde auch so funktionieren:

Code: Alles auswählen

$date = new cContentTypeDate($art->getContent("DATE", 12), 12, array());
$dateData = $date->getConfiguration();
echo $dateData['date_timestamp'];
$art ist ein cApiArticleLanguage-Objekt und 12 der Content-Typ-Index von CMS_DATE.
Viele Grüße
Dominik
Antworten