Modul Version: 1.1.03 Source
FMPro::fmp2perl - Parst FMPro-XML und gibt Feldnamen, -werte und Requestparameter als Referenz zurück. Es können seit Version 1.1 Wertelisten zurückgegeben werden.
use FMPro::fmp2perl qw(fmp2perl);
$tmp = <URL>; <File> oder <String>;
$values =fmp2perl($tmp);
$title = $values->[0]{title}{Data}[0];
$database = $values->[0]{CurrentDatabase};
$RecID = $values->[0]{CurrentRecID};
$type = $values->[0]{title}{Type}; # only for FMPXMLRESULT
# only for FMPXMLLAYOUT (request: http://www.domain.com/FMPro?-db=DB.fp5&-Format=-fmp_xml&-lay=Lay&-view=), Item 0
$valuelistitem[0] = $values->[0]{ValueList}{listname}[0];
fmp2perl parst FMPro-XML und gibt Feldnamen, -werte und Requestparameter als Referenz zurück. Das XML kann als FMPDSORESULT oder FMPXMLRESULT uebergeben werden. Werden Wertelistennamen und -einträge benötigt, muss das XML in FMPXMLLAYOUT vorliegen.
fmp2perl ist auf UNIX- und WINDOWS-Systemen lauffähig.
Bisher unter ActivePerl 5.8 getestet.
- String
- enthält eine XML-Struktur der Form FMPDSORESULT, FMPXMLRESULT oder FMPXMLLAYOUT. Es wird nur UTF-8 Kodierung berücksichtigt.
- Verweis auf eine Datei
- enthält eine XML-Struktur der Form FMPDSORESULT, FMPXMLRESULT oder FMPXMLLAYOUT. Es wird nur UTF-8 Kodierung berücksichtigt.
- URL
- enthält einen FMPro-Datenbank-Request.
Erläuterungen zur Output-Tabelle:
$v = fmp2perl($tmp)
X/U - $tmp ist URL im FMPXMLRESULT Format
X/FS - $tmp ist Pfad zu File oder String ~
D/U - $tmp ist URL im FMPDSORESULT Format
D/FS - $tmp ist Pfad zu File oder String ~
L - $tmp ist Pfad zu File oder String ~ oder URL im FMPXMLLAYOUTRESULT Format
Wert - z.B. {<Feldname>}{Data}[0]......$v->[0]{<Feldname>}{Data}[0]
mit
$v ->[0] - 1. Datensatz
{<Feldname>} - Name des Feldes
{Data} - Ausgabe des Feldinhaltes
[0] - 0. Wiederholung eines Wiederholfeldes bzw. Feld ohne Wiederholung
Wert
|
X/U |
X/FS |
D/U |
D/FS |
L |
{<Feldname>}{CurrentFoundCount} |
x |
x |
|
|
|
{<Feldname>}{Data}[0..<MaxReapeat>-1] |
x |
x |
x |
x |
|
{<Feldname>}{EmptyOk} |
x |
x |
|
|
|
{<Feldname>}{MaxReapeat} |
x |
x |
|
|
|
{<Feldname>}{Type} |
x |
x |
|
|
|
{CurrentFormat} |
x |
x |
x |
x |
|
{CurrentAction} |
x |
|
x |
|
|
{CurrentDatabase} |
x |
x |
x |
x |
x |
{CurrentError} |
x |
x |
x |
x |
|
{CurrentLayout} |
x |
x |
x |
x |
x |
{CurrentLOP} |
x |
|
x |
|
|
{CurrentMax} |
x |
|
x |
|
|
{CurrentModID} |
x |
x |
x |
x |
|
{CurrentOutCount} |
|
|
x |
x |
|
{CurrentRecordCount} |
x |
x |
|
|
|
{CurrentSkip} |
x |
|
x |
|
|
{CurrentSort} |
x |
|
x |
|
|
{CurrentRecID} |
x |
x |
x |
x |
|
{CurrentRecordNumber} |
x |
x |
x |
x |
|
{DateFormat} |
x |
x |
|
|
|
{ProductBuild} |
x |
x |
|
|
|
{ProductName} |
x |
x |
|
|
|
{ProductVersion} |
x |
x |
|
|
|
{TimeFormat} |
x |
x |
|
|
|
{URL} |
x |
|
x |
|
|
{ValueList}{ListName}[ListItem] |
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
Die Variablennamen wurden in Anlehnung an die CDML-Syntax vergeben. Daher wird die Lektuere der CDML-Referenz zur Bedeutung der Werte empfohlen.
Einzige Ausnahme ist der Wert {CurrentOutCount} ( also z.B. $v->[2]{CurrentOutCount} ).
{CurrentOutCount} - Anzahl der Datensaetze in der der XML-Struktur; nur bei FMPDSORESULT
use FMPro::fmp2perl qw(fmp2perl);
# Beispiel mit URL FMPDSORESULT
$tmp = "http://www.domain.com/FMPro?-db=your-database.fp5";
$tmp .= "&-lay=your-layout&-Format=-dso_xml&-FindAll=";
$values =fmp2perl($tmp);
# Beispiel mit URL FMPXMLRESULT
$tmp = "http://www.domain.com/FMPro?-db=your-database.fp5";
$tmp .= "&-lay=your-layout&-Format=-fmp_xml&-FindAll=";
$values =fmp2perl($tmp);
# Beipiel mit Angabe eines Files (UNIX)
$tmp = "/xml_data/path/fmp_xml_file.xml";
$values =fmp2perl($tmp);
# Beipiel mit Angabe eines Files (WINDOWS)
$tmp = "C:\\Inetpub\\wwwroot\\xml_data_path\\fmp_xml_file.xml";
$values =fmp2perl($tmp);
# Beispiel mit Uebergabe einer FMPB<DSO>RESULT XML-Struktur
$tmp =<<__XML__;
<?xml version="1.0" encoding="UTF-8"?>
<FMPDSORESULT xmlns="http://www.filemaker.com/fmpdsoresult">
<ERRORCODE>0</ERRORCODE>
<DATABASE>YOUR-DATABASE.FP5</DATABASE>
<LAYOUT></LAYOUT>
<ROW MODID="4" RECORDID="32871">
<title>your title</title>
</ROW>
</FMPDSORESULT>
__XML__
$values =fmp2perl($tmp);
# Beispiel mit Uebergabe einer FMPB<XML>RESULT XML-Struktur
$tmp =<<__XML__;
<?xml version="1.0" encoding="UTF-8"?>
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="5/4/2002" NAME="FileMaker Pro Web Companion" VERSION="6.0v1"/>
<DATABASE DATEFORMAT="d.M.yyyy" LAYOUT="" NAME="YOUR-DATABASE.FP5" RECORDS="4021" TIMEFORMAT="k:mm:ss"/>
<METADATA>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="title" TYPE="TEXT"/>
</METADATA>
<RESULTSET FOUND="1">
<ROW MODID="1" RECORDID="32775">
<COL>
<DATA>your title</DATA>
</COL>
</ROW>
</RESULTSET>
</FMPXMLRESULT>
__XML__
$values =fmp2perl($tmp);
$title = $values->[0]{title}{Data}[0];
$database = $values->[0]{CurrentDatabase};
...
$RecID = $values->[0]{CurrentRecID};
$type = $values->[0]{title}{Type}; # only for FMPXMLRESULT
Ab Version 1.0.03 kommt fmp2perl.pm, falls nicht vorhanden, auch ohne Modul Unicode::String aus.
Hans-Martin Aurich info@webconsultant.de technik@baurat.de
Copyright 2004 - 2006 Hans-Martin Aurich. All rights reserved.
fmp2csv - Perlmodul erzeugt aus FMPXMLRESULT-XML (Datei, String, URL) eine kommaseparierte CSV-Datei zum Datenimport nach MySQL. Die CSV-Datei enthält als 1. Zeile die Feld- / Spaltennamen. Alle Werte von Textfeldern werden in "..." Hochkomma gesetzt. In Textfeldern auftretende " Hochkommata werden maskiert \". In Zahlenfeldern auftretende "," Kommata werden durch "." Punkt ersetzt.
Die vorliegende Version ist noch in der Testphase.
ToDo: Automatische Anpassung von Datumsformaten.
Modul Version 0.1 Source
Copyright 2006 Hans-Martin Aurich. All rights reserved.
|