Help Reading XML files in Python: Urgent

OK so my objective is to create a python program that will parse an XML file(input.xml), then the program will create an mxml(output.mxml) file.

In the program (.py) i need to read between CDATA so that I would get an output the CDATA code in the input.xml

INPUT.XML
<![CDATA[
<pre>
x = 5
if (x > 4):
print "x is bigger than 4"
</pre>
]]>
</htmlText>
----------------------------
program.py
self.outfile.write(' <mx:htmlText>\n')
self.outfile.write(' <![CDATA[\n')
self.outfile.write(HOW DO I READ BETWEEN CDATA OF XML FILE)
self.outfile.write('\n')
self.outfile.write(' ]]>\n')
self.outfile.write(' </mx:htmlText>\n')
----------------------------
OUTPUT MUST BE LIKE THIS
<![CDATA[
<pre>
x = 5
if (x > 4):
print "x is bigger than 4"
</pre>
]]>
</htmlText>

I'm sorry if I dont make any sense!

if you are doing full fledge XML processing, use an XML processing module, such as PyXML (search google). otherwise, here's something simplistic

f=0
for line in open("file"):
    line=line.strip()
    if "</htmlText>" in line: print line;f=0
    if "<![CDATA[" in line: f=1
    if f:print line
 

actually
Here is my program

import xml.sax
true = 1
false = 0

class MyHandler(xml.sax.ContentHandler):
    """ class to parse xml files to create mxml files """
    def __init__(self):
        xml.sax.ContentHandler.__init__(self)
        self.outfile = None
        self.inPage = false
        self.inQuestion = false
        self.inReply = false
        self.inAnswer = false
        self.inQuestionText = false
        self.inPageTitle = false
        self.inText = false
        self.inHtmlText = false
        self.replies = []
        self.answers = []
        self.storedReplies = []
        self.questionNumber = 1
        self.questionText = ""
        self.pageTitle= []
        self.text= ""
        self.htmlText= []
    
    def startElement(self,name,attr):
        if (name == "viewStack"):
            infile = open("header.in","r")
            lines = infile.readlines()
            infile.close()
            outputfile = raw_input("Enter output filename: ")
            self.outfile = open(outputfile,"w")
            for i in range(0, len(lines)):
                self.outfile.write(lines)
        elif (name == "page"):
            self.inPage = true
        elif (name == "question"):
            self.inQuestion = true
        elif (name == "reply"):
            self.inReply = true
        elif (name == "answer"):
            self.inAnswer = true
        elif (name == "questionText"):
            self.inQuestionText = true
        elif (name == "pageTitle"):
            self.inPageTitle = true
        elif (name == "text"):
            self.inText = true
        elif (name == "htmlText"):
            self.inHtmlText = true
                        
    def endElement(self,name):
        if (name == "viewStack"):
            self.outfile.write('            <mx:Panel title="End of Tutorial"\n')
            self.outfile.write('                height="100%" width="100%">\n')
            self.outfile.write('                <mx:Label width="100%"\n')
            self.outfile.write('                    text="All done" />\n')
            self.outfile.write('            </mx:Panel>\n')
            self.outfile.write('        </mx:ViewStack>\n')
            self.outfile.write('    </comp:ResizablePanel>\n')
            self.outfile.write('    <mx:Script>\n')
            self.outfile.write('        <![CDATA[\n')
            for i in range(0, len(self.storedReplies)):
                self.outfile.write('            private function ')
                self.outfile.write('handleq' + str(i+1))
                self.outfile.write('(Event:MouseEvent):void\n')
                self.outfile.write('            {\n') 
                for j in range(0, len(self.storedReplies)):
                    if (j == 0):
                        self.outfile.write('                if ')
                    else:
                        self.outfile.write('                else if ')
                    self.outfile.write('(q' + str(i+1))
                    self.outfile.write('_' + str(j+1))
                    self.outfile.write('.selected) {\n')
                    self.outfile.write('                    Alert.show("')
                    self.outfile.write(self.storedReplies[j])
                    self.outfile.write('","Result")\n')
                    self.outfile.write('                }\n')
                self.outfile.write('            }\n')
            self.outfile.write('        ]]>\n')
            self.outfile.write('    </mx:Script>\n')
            self.outfile.write('</mx:Application>\n')
            self.outfile.close()
        elif (name == "page"):
            self.inPage = false
        elif (name == "question"):
            self.inQuestion = false
            self.storedReplies.append(self.replies)
            self.replies = []
            self.outfile.write('                ')
            self.outfile.write('<mx:Text width="100%" ')
            self.outfile.write('color="blue" selectable="false"\n')
            self.outfile.write('                    ')
            self.outfile.write('text="' + self.questionText)
            self.outfile.write('" />\n')
            for i in range(0, len(self.answers)):
                self.outfile.write('                ')
                self.outfile.write('<comp:MultilineRadioButton>')
                self.outfile.write(' width="370" id="q')
                self.outfile.write(str(self.questionNumber))
                self.outfile.write('_' + str(i+1) + '" ')
                self.outfile.write('label="' + self.answers)
                self.outfile.write('" />\n')
            self.answers = []
            self.outfile.write('                ')
            self.outfile.write('<mx:Button label="Check Answer"\n')
            self.outfile.write('                    ')
            self.outfile.write('click="handleq')
            self.outfile.write(str(self.questionNumber))
            self.outfile.write('(event)" />\n')
            self.questionNumber = self.questionNumber + 1
        elif (name == "reply"):
            self.inReply = false
        elif (name == "answer"):
            self.inAnswer = false
        elif (name == "questionText"):
            self.inQuestionText = false
        elif (name == "pageTitle"):
            self.inPageTitle = false
            self.outfile.write('            ')
            self.outfile.write('<mx:Panel title="' + self.pageTitle)
            self.outfile.write(' "')
            self.outfile.write('\n')
            self.outfile.write('                ')
            self.outfile.write('width="100%" height="100%">\n')
        elif (name == "text"):
            self.inText = false
            self.outfile.write('                ')
            self.outfile.write('<mx:Text width="100%" selectable="false"\n')
            self.outfile.write('                    ')
            self.outfile.write('text="' + self.text)
            self.outfile.write('\n')
            self.outfile.write('                          ')
            self.outfile.write('" />\n')
        elif (name == "htmlText"):
            self.inHtmlText = false
            self.outfile.write('                  <mx:htmlText>\n')
            self.outfile.write('                    <![CDATA[\n')
            self.outfile.write('text="' + self.htmlText)
            self.outfile.write('" />\n')
            self.outfile.write('\n')
            self.outfile.write('                    ]]>\n')
            self.outfile.write('                  </mx:htmlText>\n')
            self.outfile.write('                </mx:Text>\n')
            self.outfile.write('            </mx:Panel>\n')

    def characters(self,data):
        if (self.inPage):
            if (self.inQuestion):
                if (self.inReply):
                    if (data.strip() != ""):
                        #print data.strip()
                        self.replies.append(data.strip())
                elif (self.inAnswer):
                    if (data.strip() != ""):
                        self.answers.append(data.strip())
                        print data.strip()
                elif (self.inQuestionText):
                    if (data.strip() != ""):
                        self.questionText = data.strip()
            elif (self.inPageTitle):
                if (data.strip() != ""):
                    self.pageTitle = data.strip()
            elif (self.inText):
                if (data.strip() != ""):
                    self.text = data.strip()
            elif (self.inHtmlText):
                if (data.strip() != ""):
                    self.htmlText = data.strip()


parser = xml.sax.make_parser()
handler = MyHandler()
parser.setContentHandler(handler)
inputfile = raw_input("Enter xml filename: ")
parser.parse(inputfile)

And My Current Output

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:MyComp="mypanel.test.*" xmlns:comp="*"
    backgroundColor="#ccffcc"
    backgroundAlpha="0"
    horizontalAlign="left"
    verticalGap="10" horizontalGap="10">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert
            private function nextClick(Event:MouseEvent):void
            {
                if (vs.selectedIndex < vs.numChildren - 1) {
                    vs.selectedIndex++;
                }
            }
            private function prevClick(Event:MouseEvent):void
            {
                if (vs.selectedIndex > 0) {
                    vs.selectedIndex--;
                }
            }
        ]]>
    </mx:Script>
    <comp:ResizablePanel width="470" height="340">
        <mx:HBox>
            <mx:Button label="Home" click="vs.selectedIndex=0" />
            <mx:Button label="Previous" click="prevClick(event)" />
            <mx:Button label="Next" click="nextClick(event)" />
        </mx:HBox>
        <mx:ViewStack id="vs"
            x="30" y="32"
            width="440" height="639"
            selectedIndex="0">
            <mx:Panel title="Welcome"
                height="100%" width="100%">
                <mx:Label width="100%"
                    text="When you are ready to proceed, hit Next" />
            </mx:Panel>            
            <mx:Panel title="page 1 "
                width="100%" height="100%">
                <mx:Text width="100%" selectable="false"
                    text="Paragraph 1 on page 1
                          " />
                  <mx:htmlText>
                    <![CDATA[
text="</pre>" />

                    ]]>
                  </mx:htmlText>
                </mx:Text>
            </mx:Panel>
            <mx:Panel title="Question page "
                width="100%" height="100%">
                <mx:Text width="100%" color="blue" selectable="false"
                    text="What is 3 + 5?" />
                <comp:MultilineRadioButton> width="370" id="q1_1" label="7" />
                <comp:MultilineRadioButton> width="370" id="q1_2" label="8" />
                <mx:Button label="Check Answer"
                    click="handleq1(event)" />
            <mx:Panel title="End of Tutorial"
                height="100%" width="100%">
                <mx:Label width="100%"
                    text="All done" />
            </mx:Panel>
        </mx:ViewStack>
    </comp:ResizablePanel>
    <mx:Script>
        <![CDATA[
            private function handleq1(Event:MouseEvent):void
            {
                if (q1_1.selected) {
                    Alert.show("Incorrect","Result")
                }
                else if (q1_2.selected) {
                    Alert.show("Yes, that is correct.","Result")
                }
            }
        ]]>
    </mx:Script>
</mx:Application>

Im trying to read in between the input file

<?xml version="1.0" ?>
<viewStack>
  <page>
    <pageTitle>
      page 1
    </pageTitle>
    <text>
      Paragraph 1 on page 1
    </text>
    <htmlText>
      <![CDATA[
      <pre>
x = 5
if (x > 4):
    print "x is bigger than 4"
</pre>
      ]]>
    </htmlText>
  </page>
  <page>
    <pageTitle>
      Question page
    </pageTitle>
    <question>
      <questionText>
        What is 3 + 5?
      </questionText>
      <questionNumber>
        q1
      </questionNumber>
      <answer>
        7
      </answer>
      <reply>
        Incorrect
      </reply>
      <answer>
        8
      </answer>
      <reply>
        Yes, that is correct.
      </reply>
    </question>
  </page>
</viewStack>

How do I read between the CDATA? this part I am having trouble to write through the program. CHECK IN BOLD