Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 56251
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T17:30:19+00:00 2026-05-10T17:30:19+00:00

I’ve discovered that cElementTree is about 30 times faster than xml.dom.minidom and I’m rewriting

  • 0

I’ve discovered that cElementTree is about 30 times faster than xml.dom.minidom and I’m rewriting my XML encoding/decoding code. However, I need to output XML that contains CDATA sections and there doesn’t seem to be a way to do that with ElementTree.

Can it be done?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T17:30:19+00:00Added an answer on May 10, 2026 at 5:30 pm

    After a bit of work, I found the answer myself. Looking at the ElementTree.py source code, I found there was special handling of XML comments and preprocessing instructions. What they do is create a factory function for the special element type that uses a special (non-string) tag value to differentiate it from regular elements.

    def Comment(text=None):     element = Element(Comment)     element.text = text     return element 

    Then in the _write function of ElementTree that actually outputs the XML, there’s a special case handling for comments:

    if tag is Comment:     file.write('<!-- %s -->' % _escape_cdata(node.text, encoding)) 

    In order to support CDATA sections, I create a factory function called CDATA, extended the ElementTree class and changed the _write function to handle the CDATA elements.

    This still doesn’t help if you want to parse an XML with CDATA sections and then output it again with the CDATA sections, but it at least allows you to create XMLs with CDATA sections programmatically, which is what I needed to do.

    The implementation seems to work with both ElementTree and cElementTree.

    import elementtree.ElementTree as etree #~ import cElementTree as etree  def CDATA(text=None):     element = etree.Element(CDATA)     element.text = text     return element  class ElementTreeCDATA(etree.ElementTree):     def _write(self, file, node, encoding, namespaces):         if node.tag is CDATA:             text = node.text.encode(encoding)             file.write('\n<![CDATA[%s]]>\n' % text)         else:             etree.ElementTree._write(self, file, node, encoding, namespaces)  if __name__ == '__main__':     import sys      text = '''     <?xml version='1.0' encoding='utf-8'?>     <text>     This is just some sample text.     </text>     '''      e = etree.Element('data')     cdata = CDATA(text)     e.append(cdata)     et = ElementTreeCDATA(e)     et.write(sys.stdout, 'utf-8') 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 66k
  • Answers 66k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer The simplest way is this: fullname = [[firstName stringByAppendingString:@' ']… May 11, 2026 at 11:33 am
  • added an answer To add to nstehr's answer, see: SQLite vs MySQL How… May 11, 2026 at 11:33 am
  • added an answer This is what you usually do: using (ISession session =… May 11, 2026 at 11:33 am

Related Questions

I keep getting tasks that are above my skill level. How can I address this without coming accross as grossly incompetent?
I have a web-service that I will be deploying to dev, staging and production.
I'm thinking of starting a wiki, probably on a low cost LAMP hosting account.
I have the following tables in my database that have a many-to-many relationship, which
I'm using the RESTful authentication Rails plugin for an app I'm developing. I'm having
I recently printed out Jeff Atwood's Understanding The Hardware blog post and plan on
I find that getting Unicode support in my cross-platform apps a real pain in
I would like to test a string containing a path to a file for
I'm getting this problem: PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable
I'm an Information Architect and JavaScript developer by trade nowadays, but recently I've been

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.