1.1 --- a/libxml2dom/__init__.py Fri Jul 22 22:52:40 2005 +0000
1.2 +++ b/libxml2dom/__init__.py Wed Aug 03 19:35:01 2005 +0000
1.3 @@ -360,21 +360,21 @@
1.4 def createDocument(namespaceURI, localName, doctype):
1.5 return Document(Node_createDocument(namespaceURI, localName, doctype))
1.6
1.7 -def parse(stream_or_string):
1.8 +def parse(stream_or_string, html=0):
1.9 if hasattr(stream_or_string, "read"):
1.10 stream = stream_or_string
1.11 - return parseString(stream.read())
1.12 + return parseString(stream.read(), html)
1.13 else:
1.14 - return parseFile(stream_or_string)
1.15 + return parseFile(stream_or_string, html)
1.16
1.17 -def parseFile(s):
1.18 - return Document(Node_parseFile(s))
1.19 +def parseFile(s, html=0):
1.20 + return Document(Node_parseFile(s, html))
1.21
1.22 -def parseString(s):
1.23 - return Document(Node_parseString(s))
1.24 +def parseString(s, html=0):
1.25 + return Document(Node_parseString(s, html))
1.26
1.27 -def parseURI(uri):
1.28 - return Document(Node_parseURI(uri))
1.29 +def parseURI(uri, html=0):
1.30 + return Document(Node_parseURI(uri, html))
1.31
1.32 def toString(node, encoding=None):
1.33 return Node_toString(node.as_native_node(), encoding)
2.1 --- a/libxml2dom/macrolib/macrolib.py Fri Jul 22 22:52:40 2005 +0000
2.2 +++ b/libxml2dom/macrolib/macrolib.py Wed Aug 03 19:35:01 2005 +0000
2.3 @@ -334,35 +334,48 @@
2.4 Node_appendChild(d, root)
2.5 return d
2.6
2.7 -def parse(stream_or_string):
2.8 +def parse(stream_or_string, html=0):
2.9 if hasattr(stream_or_string, "read"):
2.10 stream = stream_or_string
2.11 - return parseString(stream.read())
2.12 + return parseString(stream.read(), html)
2.13 else:
2.14 - return parseFile(stream_or_string)
2.15 + return parseFile(stream_or_string, html)
2.16
2.17 -def parseFile(s):
2.18 +def parseFile(s, html=0):
2.19 # NOTE: Switching off validation and remote DTD resolution.
2.20 - context = libxml2mod.xmlCreateFileParserCtxt(s)
2.21 - libxml2mod.xmlParserSetValidate(context, 0)
2.22 - libxml2mod.xmlCtxtUseOptions(context, 0)
2.23 - libxml2mod.xmlParseDocument(context)
2.24 - return libxml2mod.xmlParserGetDoc(context)
2.25 + if not html:
2.26 + context = libxml2mod.xmlCreateFileParserCtxt(s)
2.27 + libxml2mod.xmlParserSetValidate(context, 0)
2.28 + libxml2mod.xmlCtxtUseOptions(context, XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NONET)
2.29 + libxml2mod.xmlParseDocument(context)
2.30 + return libxml2mod.xmlParserGetDoc(context)
2.31 + else:
2.32 + return libxml2mod.htmlReadFile(s, None, HTML_PARSE_NOERROR | HTML_PARSE_NOWARNING | HTML_PARSE_NONET)
2.33
2.34 -def parseString(s):
2.35 +def parseString(s, html=0):
2.36 # NOTE: Switching off validation and remote DTD resolution.
2.37 - context = libxml2mod.xmlCreateMemoryParserCtxt(s, len(s))
2.38 - libxml2mod.xmlParserSetValidate(context, 0)
2.39 - libxml2mod.xmlCtxtUseOptions(context, 0)
2.40 - libxml2mod.xmlParseDocument(context)
2.41 - return libxml2mod.xmlParserGetDoc(context)
2.42 + if not html:
2.43 + context = libxml2mod.xmlCreateMemoryParserCtxt(s, len(s))
2.44 + libxml2mod.xmlParserSetValidate(context, 0)
2.45 + libxml2mod.xmlCtxtUseOptions(context, XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NONET)
2.46 + libxml2mod.xmlParseDocument(context)
2.47 + return libxml2mod.xmlParserGetDoc(context)
2.48 + else:
2.49 + # NOTE: URL given as None.
2.50 + html_url = None
2.51 + return libxml2mod.htmlReadMemory(s, len(s), html_url, None,
2.52 + HTML_PARSE_NOERROR | HTML_PARSE_NOWARNING | HTML_PARSE_NONET)
2.53
2.54 -def parseURI(uri):
2.55 - context = libxml2mod.xmlCreateURLParserCtxt(url)
2.56 - libxml2mod.xmlParserSetValidate(context, 0)
2.57 - libxml2mod.xmlCtxtUseOptions(context, 0)
2.58 - libxml2mod.xmlParseDocument(context)
2.59 - return libxml2mod.xmlParserGetDoc(context)
2.60 +def parseURI(uri, html=0):
2.61 + # NOTE: Switching off validation and remote DTD resolution.
2.62 + if not html:
2.63 + context = libxml2mod.xmlCreateURLParserCtxt(url)
2.64 + libxml2mod.xmlParserSetValidate(context, 0)
2.65 + libxml2mod.xmlCtxtUseOptions(context, XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NONET)
2.66 + libxml2mod.xmlParseDocument(context)
2.67 + return libxml2mod.xmlParserGetDoc(context)
2.68 + else:
2.69 + raise NotSupportedError, "parseURI does not yet support HTML"
2.70
2.71 def toString(node, encoding=None):
2.72 return libxml2mod.serializeNode(node, encoding, 0)
2.73 @@ -373,4 +386,13 @@
2.74 def toFile(node, f, encoding=None):
2.75 libxml2mod.saveNodeTo(node, f, encoding, 0)
2.76
2.77 +# libxml2mod constants.
2.78 +
2.79 +HTML_PARSE_NOERROR = 32
2.80 +HTML_PARSE_NOWARNING = 64
2.81 +HTML_PARSE_NONET = 2048
2.82 +XML_PARSE_NOERROR = 32
2.83 +XML_PARSE_NOWARNING = 64
2.84 +XML_PARSE_NONET = 2048
2.85 +
2.86 # vim: tabstop=4 expandtab shiftwidth=4