[Lxml-checkins] r44885 - in lxml/trunk: . src/lxml

scoder at codespeak.net scoder at codespeak.net
Mon Jul 9 22:40:32 CEST 2007


Author: scoder
Date: Mon Jul  9 22:40:32 2007
New Revision: 44885

Modified:
   lxml/trunk/CHANGES.txt
   lxml/trunk/src/lxml/etree.pyx
Log:
give fromstring() its own implementation and docstring, independent of XML()

Modified: lxml/trunk/CHANGES.txt
==============================================================================
--- lxml/trunk/CHANGES.txt	(original)
+++ lxml/trunk/CHANGES.txt	Mon Jul  9 22:40:32 2007
@@ -8,6 +8,9 @@
 Features added
 --------------
 
+* ``etree.fromstring()`` now supports parsing both HTML and XML, depending on
+  the parser you pass.
+
 * Support ``base_url`` keyword argument in ``HTML()`` and ``XML()``
 
 * Extended type support for ``objectify.E`` based on registered PyTypes.

Modified: lxml/trunk/src/lxml/etree.pyx
==============================================================================
--- lxml/trunk/src/lxml/etree.pyx	(original)
+++ lxml/trunk/src/lxml/etree.pyx	Mon Jul  9 22:40:32 2007
@@ -1935,7 +1935,9 @@
 
 def XML(text, _BaseParser parser=None, base_url=None):
     """Parses an XML document from a string constant. This function can be used
-    to embed "XML literals" in Python code.
+    to embed "XML literals" in Python code, like in
+
+       >>> root = etree.XML("<root><test/></root>")
 
     To override the parser with a different ``XMLParser`` you can pass it to
     the ``parser`` keyword argument.
@@ -1952,7 +1954,21 @@
     doc = _parseMemoryDocument(text, base_url, parser)
     return doc.getroot()
 
-fromstring = XML
+def fromstring(text, _BaseParser parser=None, base_url=None):
+    """Parses an XML document from a string.
+
+    To override the default parser with a different parser you can pass it to
+    the ``parser`` keyword argument.
+
+    The ``base_url`` keyword argument allows to set the original base URL of
+    the document to support relative Paths when looking up external entities
+    (DTD, XInclude, ...).
+    """
+    cdef _Document doc
+    if parser is None:
+        parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
+    doc = _parseMemoryDocument(text, base_url, parser)
+    return doc.getroot()
 
 def iselement(element):
     """Checks if an object appears to be a valid element object.


More information about the lxml-checkins mailing list