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
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
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()
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
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
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 = []