Commit 6b2e63c4 authored by Nicolas Delaby's avatar Nicolas Delaby

add load_tree function

parent a5981724
from setuptools import setup, find_packages from setuptools import setup, find_packages
import sys, os import sys, os
version = '0.9' version = '0.9a'
setup(name='xml_marshaller', setup(name='xml_marshaller',
version=version, version=version,
......
...@@ -13,7 +13,7 @@ from types import ClassType ...@@ -13,7 +13,7 @@ from types import ClassType
import sys import sys
from xml.sax import make_parser from xml.sax import make_parser
from xml.sax.saxutils import escape, unescape from xml.sax.saxutils import escape, unescape
from lxml.sax import ElementTreeContentHandler from lxml.sax import ElementTreeContentHandler, saxify
from lxml import etree from lxml import etree
from lxml.builder import ElementMaker from lxml.builder import ElementMaker
from cStringIO import StringIO from cStringIO import StringIO
...@@ -300,6 +300,18 @@ class Unmarshaller(ElementTreeContentHandler): ...@@ -300,6 +300,18 @@ class Unmarshaller(ElementTreeContentHandler):
m = self.__class__() m = self.__class__()
return m._load(file_object) return m._load(file_object)
def load_tree(self, tree):
"""Unmarshal element_tree object and return
python object.
"""
parser = make_parser()
parser.setFeature('http://xml.org/sax/features/namespaces', True)
parser.setContentHandler(self)
saxify(tree, self)
result = self.data_stack[0]
self._clear()
return result
def loads(self, string): def loads(self, string):
"Unmarshal one value from a string" "Unmarshal one value from a string"
# Instantiate a new object; unmarshalling isn't thread-safe # Instantiate a new object; unmarshalling isn't thread-safe
...@@ -552,6 +564,7 @@ dumps_ns = _m_ns.dumps ...@@ -552,6 +564,7 @@ dumps_ns = _m_ns.dumps
_um = Unmarshaller() _um = Unmarshaller()
load = _um.load load = _um.load
loads = _um.loads loads = _um.loads
load_tree = _um.load_tree
del _m, _um, _m_ns del _m, _um, _m_ns
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment