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

scoder at codespeak.net scoder at codespeak.net
Sat Apr 12 14:33:34 CEST 2008


Author: scoder
Date: Sat Apr 12 14:33:33 2008
New Revision: 53717

Modified:
   lxml/trunk/   (props changed)
   lxml/trunk/src/lxml/iterparse.pxi
   lxml/trunk/src/lxml/tests/test_elementtree.py
   lxml/trunk/src/lxml/tests/test_etree.py
Log:
 r3944 at delle:  sbehnel | 2008-04-12 12:02:37 +0200
 fix for CDATA parsing in iterparse()


Modified: lxml/trunk/src/lxml/iterparse.pxi
==============================================================================
--- lxml/trunk/src/lxml/iterparse.pxi	(original)
+++ lxml/trunk/src/lxml/iterparse.pxi	Sat Apr 12 14:33:33 2008
@@ -380,6 +380,8 @@
             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
         if not resolve_entities:
             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
+        if not strip_cdata:
+            parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
 
         _BaseParser.__init__(self, parse_options, html, schema,
                              remove_comments, remove_pis, strip_cdata,

Modified: lxml/trunk/src/lxml/tests/test_elementtree.py
==============================================================================
--- lxml/trunk/src/lxml/tests/test_elementtree.py	(original)
+++ lxml/trunk/src/lxml/tests/test_elementtree.py	Sat Apr 12 14:33:33 2008
@@ -2709,6 +2709,16 @@
             ['b', 'c'],
             [ el.tag for el in root ])
 
+    def test_iterparse_cdata(self):
+        tostring = self.etree.tostring
+        f = StringIO('<root><![CDATA[test]]></root>')
+        context = self.etree.iterparse(f)
+        content = [ el.text for event,el in context ]
+
+        self.assertEquals(['test'], content)
+        self.assertEquals('<root>test</root>',
+                          tostring(context.root))
+
     def test_parse_file(self):
         parse = self.etree.parse
         # from file

Modified: lxml/trunk/src/lxml/tests/test_etree.py
==============================================================================
--- lxml/trunk/src/lxml/tests/test_etree.py	(original)
+++ lxml/trunk/src/lxml/tests/test_etree.py	Sat Apr 12 14:33:33 2008
@@ -409,6 +409,26 @@
         a = iterator.root
         self.assertEquals(a.text, text)
 
+    def test_iterparse_cdata(self):
+        tostring = self.etree.tostring
+        f = StringIO('<root><![CDATA[test]]></root>')
+        context = self.etree.iterparse(f)
+        content = [ el.text for event,el in context ]
+
+        self.assertEquals(['test'], content)
+        self.assertEquals('<root>test</root>',
+                          tostring(context.root))
+
+    def test_iterparse_keep_cdata(self):
+        tostring = self.etree.tostring
+        f = StringIO('<root><![CDATA[test]]></root>')
+        context = self.etree.iterparse(f, strip_cdata=False)
+        content = [ el.text for event,el in context ]
+
+        self.assertEquals(['test'], content)
+        self.assertEquals('<root><![CDATA[test]]></root>',
+                          tostring(context.root))
+
     def test_parser_encoding_unknown(self):
         self.assertRaises(
             LookupError, self.etree.XMLParser, encoding="hopefully unknown")


More information about the lxml-checkins mailing list