Project

rfilemaker

0.0
No commit activity in last 3 years
No release in over 3 years
Ruby library to parse Filemaker Pro FMPXMLRESULT files
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

>= 1.4.2
>= 1.2.9
 Project Readme

rfilemaker¶ ↑

Heavily inspired by lardawge-rfm, see github.com/lardawge/rfm.

This library parses a Filemaker Pro FMPXMLRESULT type document, nothing more, nothing less

Installation¶ ↑

Easy, just use:

gem install rfilemaker

Usage¶ ↑

To parse a Filemaker Pro export file named ‘export.xml’, use:

RFilemaker.parse('export.xml')

This returns an array of hashes, each of which represent a row in your Filemaker database. Fields are automatically converted to their ruby types.

For instance, parsing the following XML export:

<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
  <ERRORCODE>0</ERRORCODE> 
  <PRODUCT BUILD="5/23/2002" NAME="FileMaker Pro"
  VERSION="7.0"/> 
  <DATABASE DATEFORMAT="MM/dd/yy" LAYOUT="summary"
  NAME="Employees.fp7" RECORDS="23" TIMEFORMAT="hh:mm:ss"/>
  <METADATA>
    <FIELD EMPTYOK="NO" MAXREPEAT="1" NAME="First Name" TYPE="TEXT"/>
    <FIELD EMPTYOK="NO" MAXREPEAT="1" NAME="Last Name" TYPE="TEXT"/>
    <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Department" TYPE="TEXT"/>
  </METADATA>
  <RESULTSET FOUND="2">
    <ROW MODID="47" RECORDID="34"> 
      <COL>
        <DATA>Joe</DATA>
      </COL>
      <COL>
        <DATA>Smith</DATA>
      </COL>
      <COL>
        <DATA>Engineering</DATA>
      </COL>
    </ROW>
    <ROW MODID="89" RECORDID="78">
      <COL> 
        <DATA>Susan</DATA>
      </COL>
      <COL>
        <DATA>Jones</DATA>
      </COL>
      <COL>
        <DATA>Marketing</DATA>
      </COL>
    </ROW>
  </RESULTSET>
</FMPXMLRESULT>

gives this Ruby hash:

[{"last name"=>"Smith", "department"=>"Engineering", "first name"=>"Joe"},
 {"last name"=>"Jones", "department"=>"Marketing", "first name"=>"Susan"}]

The resulting hash is case-insensitive, so keys can be looked up in any given case.

Note on Patches/Pull Requests¶ ↑

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.