Metadata-Version: 2.0
Name: xml-models2
Version: 0.11.0
Summary: XML backed models queried from external REST apis
Home-page: http://github.com/alephnullplex/xml_models2
Author: Geoff Ford and Chris Tarttelin and Cam McHugh
Author-email: g_ford@hotmail.ccom
License: UNKNOWN
Platform: UNKNOWN
Requires-Dist: future
Requires-Dist: lxml
Requires-Dist: python-dateutil
Requires-Dist: pytz
Requires-Dist: requests

[![Build Status](https://travis-ci.org/alephnullplex/xml_models2.svg?branch=master)](https://travis-ci.org/alephnullplex/xml_models2)
[![Coverage Status](https://coveralls.io/repos/alephnullplex/xml_models2/badge.svg?branch=master)](https://coveralls.io/r/alephnullplex/xml_models2?branch=master)

[Read The Docs](http://xml-models2.readthedocs.org/en/latest/)

# XmlModels2

XmlModels allows you to define Models similar in nature to Django models that are backed by XML endpoints rather than a
database.   Using a familiar declarative definition, the fields map to values in the XML document by means of XPath
expressions. With support for querying external REST APIs using a django-esque approach, we have strived to make
writing and using xml backed models as close to django database models as we can, within the limitations of the
available API calls.

# Installation

The simplest approach is to to use `pip install xml_models2`

# A simple example

Just to get started, this is an example of taking an XML representation of an Address that might be returned from a
GET request to an external REST api.

    <Address id="2">
      <number>22</number>
      <street>Acacia Avenue</street>
      <city>Maiden</city>
      <country>England</country>
      <postcode>IM6 66B</postcode>
    </Address>

    class Address(xml_models.Model):
      id=xml_models.IntField(xpath="/Address/@id")
      number = xml_models.IntField(xpath="/Address/number")
      street = xml_models.CharField(xpath="/Address/street")
      city = xml_models.CharField(xpath="/Address/city")
      country = xml_models.CharField(xpath="/Address/country")
      postcode = xml_models.CharField(xpath="/Address/postcode")

      finders = {(id,): 'http://adresses/%s'}

This example would be used as follows:-

    >>> address = Address.objects.get(id=2)
    >>> print "address is %s, %s" % (address.number, address.street)
    "22, Acacia Avenue"

# Heritage

This project is a fork of [Django REST Models](http://djangorestmodel.sourceforge.net/)


