[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