Exemplo n.º 1
0
    def deserialize(self,
                    source,
                    prefixes=None,
                    strict=False,
                    as_attribute=None,
                    as_list=None,
                    as_attribute_of_element=None):

        if isinstance(source, basestring):
            try:
                if os.path.exists(source):
                    xtr = XmlTextReader(StreamReader(source))
            except ValueError:
                xtr = XmlTextReader(StringReader(source))
            else:
                xtr = XmlTextReader(StringReader(source))
        elif hasattr(source, 'read'):
            xtr = XmlTextReader(StringReader(source.read()))

        settings = XmlReaderSettings()
        settings.ProhibitDtd = True
        reader = XmlReader.Create(xtr, settings)

        document = Document()
        document.as_attribute = as_attribute or {}
        document.as_list = as_list or {}
        document.as_attribute_of_element = as_attribute_of_element or {}

        self._deserialize(reader, document)

        xtr.Close()
        reader.Close()

        return document
Exemplo n.º 2
0
 def reset(self):
     if self._root:
         self._root.forget()
         self._root = None
     if self._current_el:
         self._current_el.forget()
         self._current_el = None
     self._root = Document()
     self._current_el = self._root
     self._current_level = 0
Exemplo n.º 3
0
    def deserialize(self, source, prefixes=None, strict=False):
        doc = None
        if isinstance(source, basestring):
            if os.path.exists(source):
                doc = xdm.parse(source)
            else:
                doc = xdm.parseString(source)
        elif hasattr(source, 'read'):
            doc = xdm.parse(source)

        document = Document()

        self.__deserialize_fragment(doc, document)

        if doc:
            try:
                doc.unlink()
            except KeyError:
                pass

        return document
Exemplo n.º 4
0
    def serialize(self,
                  document,
                  indent=False,
                  encoding=ENCODING,
                  prefixes=None,
                  omit_declaration=False):
        if not isinstance(document, Document):
            root = document
            document = Document()
            document.xml_children.append(root)

        self.__serialize_element(document)

        if not omit_declaration:
            self.buffer.insert(
                0, '<?xml version="1.0" encoding="%s"?>%s' %
                (encoding, os.linesep))

        content = ''.join(self.buffer)
        self.buffer = []
        if indent:
            return content.rstrip(os.linesep).encode(encoding)

        return content.encode(encoding)
Exemplo n.º 5
0
 def startDocument(self):
     self._root = Document()
     self._current_el = self._root
     self._current_level = 0
     self._as_cdata = False
Exemplo n.º 6
0
 def __init__(self, out, encoding=ENCODING):
     xss.XMLGenerator.__init__(self, out, encoding)
     self._root = Document()
     self._current_el = self._root
     self._current_level = 0
     self._as_cdata = False
Exemplo n.º 7
0
 def __init__(self):
     self._root = Document()
     self._current_el = self._root
     self._current_level = 0
     self._as_cdata = False