2010-12-06 46 views
0

我正在使用以下代码来读取XML文件并使用SAX解析器将其写入XML输出文件。但是,输出文件缺少CDATA指令。 CDATA部分的内容没问题,但在输出文件中不存在起始<![CDATA[和关闭]]>从SAX解析器输出中缺少CDATA指令

from xml.sax import make_parser 
from xml.sax.handler import ContentHandler 
import sys 

class XMLWriter(): 
    def __init__ (self, xWriter): 
      self.xWriter = xWriter 

    def startElement(self, name, attrs): 
     self.xWriter.write('<' + name) 
     for sAttribute in attrs.getNames(): 
      self.xWriter.write(' %s="%s"' % (sAttribute, attrs.getValue(sAttribute))) 
     self.xWriter.write('>') 

    def characters (self, ch): 
     self.xWriter.write(ch) 

    def endElement(self, name): 
     self.xWriter.write('</'+ name + '>') 

    def processingInstruction(self, target, data): 
     return 
    def setDocumentLocator(self, dummy): 
     return 
    def startDocument(self): 
     return 
    def endDocument(self): 
     return 

parser = make_parser()  
curHandler = XMLWriter(open('test.out.xml', 'w')) 
parser.setContentHandler(curHandler) 
parser.parse(open('test.xml')) 

我在做什么错?

回答

0

CDATA是一个便利的注释,用于包含含有标记的文本。文本节点以特定序列化形式包含在CDATA中的事实可能会被解析器保留,或者可能会被丢弃。如果您的SAX解析器具有CDATA部分的事件,则必须处理它们,然后在出路中重新包装CDATA中的文本节点。