⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 indexes.py

📁 xml开源解析代码.版本为libxml2-2.6.29,可支持GB3212.网络消息发送XML时很有用.
💻 PY
字号:
#!/usr/bin/python -u# -*- coding: ISO-8859-1 -*-import sysimport libxml2# Memory debug specificlibxml2.debugMemory(1)ctxt = Noneclass callback:    def __init__(self, startd, starte, ende, delta, endd):        self.startd = startd        self.starte = starte        self.ende = ende        self.endd = endd        self.delta = delta        self.count = 0    def startDocument(self):        global ctxt        if ctxt.byteConsumed() != self.startd:            print "document start at wrong index: %d expecting %d\n" % (                  ctxt.byteConsumed(), self.startd)            sys.exit(1)    def endDocument(self):        global ctxt        expect = self.ende + self.delta * (self.count - 1) + self.endd        if ctxt.byteConsumed() != expect:            print "document end at wrong index: %d expecting %d\n" % (                  ctxt.byteConsumed(), expect)            sys.exit(1)    def startElement(self, tag, attrs):        global ctxt        if tag == "bar1":            expect = self.starte + self.delta * self.count            if ctxt.byteConsumed() != expect:                print "element start at wrong index: %d expecting %d\n" % (                   ctxt.byteConsumed(), expect)                sys.exit(1)                def endElement(self, tag):        global ctxt        if tag == "bar1":            expect = self.ende + self.delta * self.count            if ctxt.byteConsumed() != expect:                print "element end at wrong index: %d expecting %d\n" % (                      ctxt.byteConsumed(), expect)                sys.exit(1)            self.count = self.count + 1    def characters(self, data):        pass## First run a pure UTF-8 test#handler = callback(0, 13, 27, 198, 183)ctxt = libxml2.createPushParser(handler, "<foo>\n", 6, "test.xml")chunk = """  <bar1>chars1</bar1>  <bar2>chars2</bar2>  <bar3>chars3</bar3>  <bar4>chars4</bar4>  <bar5>chars5</bar5>  <bar6>&lt;s6</bar6>  <bar7>chars7</bar7>  <bar8>&#38;8</bar8>  <bar9>chars9</bar9>"""i = 0while i < 10000:    ctxt.parseChunk(chunk, len(chunk), 0)    i = i + 1chunk = "</foo>"ctxt.parseChunk(chunk, len(chunk), 1)ctxt=None## Then run a test relying on ISO-Latin-1#handler = callback(43, 57, 71, 198, 183)chunk="""<?xml version="1.0" encoding="ISO-8859-1"?><foo>"""ctxt = libxml2.createPushParser(handler, chunk, len(chunk), "test.xml")chunk = """  <bar1>chars1</bar1>  <bar2>chars2</bar2>  <bar3>chars3</bar3>  <bar4>ch鄏s4</bar4>  <bar5>chars5</bar5>  <bar6>&lt;s6</bar6>  <bar7>chars7</bar7>  <bar8>&#38;8</bar8>  <bar9>tr鑣 9</bar9>"""i = 0while i < 10000:    ctxt.parseChunk(chunk, len(chunk), 0)    i = i + 1chunk = "</foo>"ctxt.parseChunk(chunk, len(chunk), 1)ctxt=None# Memory debug specificlibxml2.cleanupParser()if libxml2.debugMemory(1) == 0:    print "OK"else:    print "Memory leak %d bytes" % (libxml2.debugMemory(1))    libxml2.dumpMemory()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -