

def parse(readable, *args, **kwargs):
    'Parse HTML or XML readable.'
    if (not hasattr(readable, 'read')):
        readable = open(readable, 'rb')
    mdp = MicroDOMParser(*args, **kwargs)
    mdp.filename = getattr(readable, 'name', '<xmlfile />')
    mdp.makeConnection(None)
    if hasattr(readable, 'getvalue'):
        mdp.dataReceived(readable.getvalue())
    else:
        r = readable.read(1024)
        while r:
            mdp.dataReceived(r)
            r = readable.read(1024)
    mdp.connectionLost(None)
    if (not mdp.documents):
        raise ParseError(mdp.filename, 0, 0, 'No top-level Nodes in document')
    if mdp.beExtremelyLenient:
        if (len(mdp.documents) == 1):
            d = mdp.documents[0]
            if (not isinstance(d, Element)):
                el = Element('html')
                el.appendChild(d)
                d = el
        else:
            d = Element('html')
            for child in mdp.documents:
                d.appendChild(child)
    else:
        d = mdp.documents[0]
    doc = Document(d)
    doc.doctype = mdp._mddoctype
    return doc

dataset/ETHPy150Open kuri65536/python-for-android/python-modules/twisted/twisted/web/microdom.py parse/original