Пример #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
Пример #2
0
    def __init__(self):
        Parser.__init__(self)
        self.settings = XmlReaderSettings()
        self.settings.ProhibitDtd = True
        self.settings.CloseInput = False

        self.buffered_parser = BridgeBufferedParser()
        self.buffered_parser.on_closed_tag = self._handle_fragment
        self.buffered_parser.on_start_tag_completed = self._handle_empty_fragment
Пример #3
0
 def _parse(self, reader):
     settings = XmlReaderSettings(ProhibitDtd=False)
     reader = XmlReader.Create(reader, settings)
     self._reader = reader
     while reader.Read():
         nodetype = reader.NodeType
         typename = Enum.GetName(XmlNodeType, nodetype)
         handler = getattr(self, '_handle_' + typename, None)
         if handler is not None:
             handler()
Пример #4
0
def parse(xml):
    # see issue 379, and https://stackoverflow.com/questions/215854/
    settings = XmlReaderSettings()
    settings.XmlResolver = None
    settings.DtdProcessing = DtdProcessing.Ignore
    settings.ProhibitDtd = False

    with XmlReader.Create(xml, settings) as xr:
        while xr.Read():
            xr.MoveToContent()
            node = XmlNode(xr)
            yield node
            if xr.IsEmptyElement:
                node.nodeType = XmlNodeType.EndElement
                del node.attributes
                yield node
Пример #5
0
    def __init__(self, target=None, validating=False):
        if not compas.IPY:
            raise Exception('CLRXMLTreeParser can only be used from IronPython')

        settings = XmlReaderSettings()
        settings.IgnoreComments = True
        settings.IgnoreProcessingInstructions = True
        settings.IgnoreWhitespace = True
        if not validating:
            settings.DtdProcessing = DtdProcessing.Ignore
            settings.ValidationType = getattr(ValidationType, 'None')
        else:
            settings.DtdProcessing = DtdProcessing.Parse
            settings.ValidationType = ValidationType.DTD
        self.settings = settings
        self._target = target or ET.TreeBuilder()
        self._buffer = []
        self._document_encoding = 'UTF-8'  # default
Пример #6
0
        def __init__(self, target=DoctypeTreeBuilder(), validating=False):
            """
            :keyword xml.etree.ElementTree.TreeBuilder target:
               the target object (optional; defaults to
               :class:`aglyph._compat.DoctypeTreeBuilder`)
            :keyword bool validating:
               specify ``True`` to use a validating parser

            """
            settings = XmlReaderSettings()
            settings.IgnoreComments = True
            settings.IgnoreProcessingInstructions = True
            settings.IgnoreWhitespace = True
            if not validating:
                settings.DtdProcessing = DtdProcessing.Ignore
                settings.ValidationType = getattr(ValidationType, "None")
            else:
                settings.DtdProcessing = DtdProcessing.Parse
                settings.ValidationType = ValidationType.DTD
            self.settings = settings
            self.version = platform.python_compiler()
            self.__log.debug("ET parser version is %s", self.version)
            self._target = target
            self._buffer = []