SAX解析器输出中缺少CDATA指令

2024-10-01 11:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用下面的代码读取一个XML文件,并使用SAX解析器将其写入XML输出文件。但是,输出文件缺少CDATA指令。CDATA部分的内容在那里,但是开始的<![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')) 

我做错什么了?在


Tags: 文件namefromimportselfparserreturndef
1条回答
网友
1楼 · 发布于 2024-10-01 11:29:59

CDATA是一种方便的注释,用于包含包含标记的文本。文本节点在特定序列化中包含在CDATA中的事实可能会被解析器保留或丢弃。如果SAX解析器有针对CDATA部分的事件,则必须处理它们,然后在退出时将文本节点重新包装在CDATA中。在

相关问题 更多 >