Provides an abstraction to lxml's XPath and XSLT functionality in a manner resembling django database models
Project description
django-xml is a python module which provides an abstraction to lxml’s XPath and XSLT functionality in a manner resembling django database models.
Installation
To install the latest stable release of django-xml, use pip or easy_install
pip install django-xml easy_install django-xml
For the latest development version, install from source with pip:
pip install -e git+git://github.com/theatlantic/django-xml#egg=django-xml
If the source is already checked out, install via setuptools:
python setup.py develop
Example
import math
from djxml import xmlmodels
class NumbersExample(xmlmodels.XmlModel):
class Meta:
extension_ns_uri = "urn:local:number-functions"
namespaces = {"fn": extension_ns_uri,}
all_numbers = xmlmodels.XPathIntegerListField("//num")
even_numbers = xmlmodels.XPathIntegerListField("//num[fn:is_even(.)]")
sqrt_numbers = xmlmodels.XPathFloatListField("fn:sqrt(//num)")
@xmlmodels.lxml_extension
def is_even(self, context, number_nodes):
numbers = [getattr(n, 'text', n) for n in number_nodes]
return all([bool(int(num) % 2 == 0) for num in numbers])
@xmlmodels.lxml_extension
def sqrt(self, context, number_nodes):
sqrts = []
for number_node in number_nodes:
number = getattr(number_node, 'text', number_node)
sqrts.append(repr(math.sqrt(int(number))))
return sqrts
def main():
numbers_xml = u"""
<numbers>
<num>1</num>
<num>2</num>
<num>3</num>
<num>4</num>
<num>5</num>
<num>6</num>
<num>7</num>
</numbers>"""
example = NumbersExample.create_from_string(numbers_xml)
print "all_numbers = %r" % example.all_numbers
print "even_numbers = %r" % example.even_numbers
print "sqrt_numbers = [%s]" % ', '.join(['%.3f' % n for n in example.sqrt_numbers])
# all_numbers = [1, 2, 3, 4, 5, 6, 7]
# even_numbers = [2, 4, 6]
# sqrt_numbers = [1.000, 1.414, 1.732, 2.000, 2.236, 2.449, 2.646]
if __name__ == '__main__':
main()
Advanced Example
An example of django-xml usage which includes XsltField and @lxml_extension methods can be found here.
API Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-xml-1.3.1.tar.gz
(23.3 kB
view details)
File details
Details for the file django-xml-1.3.1.tar.gz.
File metadata
- Download URL: django-xml-1.3.1.tar.gz
- Upload date:
- Size: 23.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6560164b0532b7d635079f43343ef46029b2cfbf575ee36d3324d7af45073ec
|
|
| MD5 |
bcaf65d6cca60254ec4396bcbf5bffbd
|
|
| BLAKE2b-256 |
940a304dd81fc221b76f5c7d28913dc6897f15870249456357307b37825b012a
|