From 9b07b0ab0a218998191ec9b8537cdf0aea0455a5 Mon Sep 17 00:00:00 2001 From: Ismael Carnales Date: Fri, 11 Feb 2011 11:41:44 -0200 Subject: [PATCH] Fix xmliter_lxml --- scrapy/contrib_exp/iterators.py | 4 ++-- scrapy/tests/test_utils_iterators.py | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scrapy/contrib_exp/iterators.py b/scrapy/contrib_exp/iterators.py index d42a25c3f..0f3a8c694 100644 --- a/scrapy/contrib_exp/iterators.py +++ b/scrapy/contrib_exp/iterators.py @@ -7,14 +7,14 @@ def xmliter_lxml(obj, nodename, namespace=None): reader = _StreamReader(obj) tag = '{%s}%s' % (namespace, nodename) if namespace else nodename iterable = etree.iterparse(reader, tag=tag, encoding=reader.encoding) + selxpath = '//' + ('x:%s' % nodename if namespace else nodename) for _, node in iterable: nodetext = etree.tostring(node) node.clear() xs = XmlXPathSelector(text=nodetext) if namespace: xs.register_namespace('x', namespace) - nodename = 'x:%s' % nodename - yield xs.select('//' + nodename)[0] + yield xs.select(selxpath)[0] class _StreamReader(object): diff --git a/scrapy/tests/test_utils_iterators.py b/scrapy/tests/test_utils_iterators.py index 79435d615..06fb4effe 100644 --- a/scrapy/tests/test_utils_iterators.py +++ b/scrapy/tests/test_utils_iterators.py @@ -110,6 +110,7 @@ class LxmlXmliterTestCase(XmliterTestCase): This is item 1 http://www.mydummycompany.com/items/1 http://www.mydummycompany.com/images/item1.jpg + http://www.mydummycompany.com/images/item2.jpg @@ -122,6 +123,8 @@ class LxmlXmliterTestCase(XmliterTestCase): namespace_iter = self.xmliter(response, 'image_link', 'http://base.google.com/ns/1.0') node = namespace_iter.next() self.assertEqual(node.select('text()').extract(), ['http://www.mydummycompany.com/images/item1.jpg']) + node = namespace_iter.next() + self.assertEqual(node.select('text()').extract(), ['http://www.mydummycompany.com/images/item2.jpg']) class UtilsCsvTestCase(unittest.TestCase):