[Erp5-report] r31606 nicolas - /erp5/trunk/products/ERP5Type/DocumentationHelper/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Jan 6 16:52:46 CET 2010
Author: nicolas
Date: Wed Jan 6 16:52:40 2010
New Revision: 31606
URL: http://svn.erp5.org?rev=31606&view=rev
Log:
Replace libxml2 library by lxml
Modified:
erp5/trunk/products/ERP5Type/DocumentationHelper/PortalTypePropertySheetDocumentationHelper.py
Modified: erp5/trunk/products/ERP5Type/DocumentationHelper/PortalTypePropertySheetDocumentationHelper.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/DocumentationHelper/PortalTypePropertySheetDocumentationHelper.py?rev=31606&r1=31605&r2=31606&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/DocumentationHelper/PortalTypePropertySheetDocumentationHelper.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/DocumentationHelper/PortalTypePropertySheetDocumentationHelper.py [utf8] Wed Jan 6 16:52:40 2010
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2007-2008 Nexedi SA and Contributors. All Rights Reserved.
@@ -31,15 +32,7 @@
from DocumentationHelper import DocumentationHelper
from Products.ERP5Type import Permissions
from Products.CMFCore.utils import getToolByName
-
-# XXX Use lxml instead.
-try:
- from libxml2 import parseDoc, parserError
- import_succeed = 1
-except ImportError:
- from xml.dom.minidom import parseString
- from xml.xpath import Evaluate
- import_succeed = 0
+from lxml import etree
class PortalTypePropertySheetDocumentationHelper(DocumentationHelper):
"""
@@ -103,28 +96,18 @@
filename=self.title_or_id()
)
xpath = '//*[name() = "office:text"]//*[name() = "text:p"]'
- if import_succeed:
- #libxml2
- # parse content.xml
- xml_doc = parseDoc(source_xml)
- # the name space text
- text_ns = xml_doc.getRootElement().searchNs(xml_doc, 'text')
- # all element text:p
- text_list = xml_doc.xpathEval(xpath)
- # all element wich have an text:style-name attribut
- parent_tag_list = xml_doc.xpathEval('//*[@*[name() = "text:style-name"]]')
- # Change the attribut text:style-name with a default value
- [parent_tag.setNsProp(text_ns, 'style-name', 'Preformatted_20_Text') \
+ # parse content.xml
+ xml_doc = etree.fromstring(source_xml)
+ # the namespace text
+ text_ns = xml_doc.nsmap['text']
+ # all element text:p
+ text_list = xml_doc.xpath(xpath, namespaces=xml_doc.nsmap)
+ # all element wich have an text:style-name attribute
+ parent_tag_list = xml_doc.xpath('//*[@*[name() = "text:style-name"]]', namespaces=xml_doc.nsmap)
+ # Change the attribute text:style-name with a default value
+ [parent_tag.attrib.update({'{%s}style-name' % text_ns: 'Preformatted_20_Text'}) \
for parent_tag in parent_tag_list]
- xml = ''.join([text.serialize('utf-8', 0) for text in text_list])
- xml_doc.freeDoc()
- return xml
- else:
- # minidom
- xml_doc = parseString(source_xml)
- tag_list = Evaluate (xpath , xml_doc)
- xml = ''.join(tag.toxml('utf-8') for tag in tag_list)
- return xml
+ return ''.join([etree.tostring(text, pretty_print=True) for text in text_list])
else:
return source_code
More information about the Erp5-report
mailing list