文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>python xml & encode

python xml & encode

时间:2009-08-26  来源:uranusllj

bbb.xml内容 <?xml version="1.0" encoding="GB2312"?> <catalog> <book isbn="1-56592-724-9"> <title>The Cathedral &amp; the Bazaar</title> <author>Eric S. Raymond</author> </book> <book isbn="1-56592-051-1"> <title>Making TeX Work</title> <author>Norman Walsh</author> </book> <!-- imagine more entries here... --> </catalog>
脚本a.py #!/usr/bin/python  import xml.sax import pprint from xml.sax import make_parser, parseString

class BookHandler(xml.sax.handler.ContentHandler):
        def __init__(self):                 self.inTitle = 0                 self.mapping = {}
        def startElement(self, name, attributes):
                if name == "book":                         self.buffer = ""                         self.isbn = attributes["isbn"]                 elif name == "title":                         self.inTitle = 1
        def characters(self, data):                 if self.inTitle:                         self.buffer += data
        def endElement(self, name):                 if name == "title":                         self.inTitle = 0                         self.mapping[self.isbn] = self.buffer

parser = xml.sax.make_parser() handler = BookHandler() parser.setContentHandler(handler) document = file("bbb.xml") text = document.read().replace("GB2312",'utf-8',1) utfdoc = text.decode("gb2312").encode("utf-8") xml.sax.parseString(text,handler) pprint.pprint(handler.mapping) 注:python 的xml.sax对中文的支持不好,所以这里先把xml里的gb2312先替换成utf-8,并把文件的编码也改成utf-8,然后再处理。注意处理完后再把他还原成gb2312,要不可能会显示异常。 另外,有些情况直接用parser.parse(document)也可以,parser.parse()后面带的参数为文件名,或文件句柄,parser.parse后可带handler参数,该参数必须是SAX ContentHandler 实例。
parseString( string, handler[, error_handler])
类似于parse(),带的参数为字符串,需要通过xml.sax.parseString()来调用。
相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载