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

📄 reader6.py

📁 xml开源解析代码.版本为libxml2-2.6.29,可支持GB3212.网络消息发送XML时很有用.
💻 PY
字号:
#!/usr/bin/python -u## this tests the entities substitutions with the XmlTextReader interface#import sysimport StringIOimport libxml2schema="""<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">  <oneOrMore>    <element name="label">      <text/>    </element>    <optional>      <element name="opt">        <empty/>      </element>    </optional>    <element name="item">      <data type="byte"/>    </element>  </oneOrMore></element>"""# Memory debug specificlibxml2.debugMemory(1)## Parse the Relax NG Schemas# rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))rngs = rngp.relaxNGParse()del rngp## Parse and validate the correct document#docstr="""<foo><label>some text</label><item>100</item></foo>"""f = StringIO.StringIO(docstr)input = libxml2.inputBuffer(f)reader = input.newTextReader("correct")reader.RelaxNGSetSchema(rngs)ret = reader.Read()while ret == 1:    ret = reader.Read()if ret != 0:    print "Error parsing the document"    sys.exit(1)if reader.IsValid() != 1:    print "Document failed to validate"    sys.exit(1)## Parse and validate the incorrect document#docstr="""<foo><label>some text</label><item>1000</item></foo>"""err=""# RNG errors are not as good as before , TODO#expect="""RNG validity error: file error line 3 element text#Type byte doesn't allow value '1000'#RNG validity error: file error line 3 element text#Error validating datatype byte#RNG validity error: file error line 3 element text#Element item failed to validate content#"""expect="""Type byte doesn't allow value '1000'Error validating datatype byteElement item failed to validate content"""def callback(ctx, str):    global err    err = err + "%s" % (str)libxml2.registerErrorHandler(callback, "")f = StringIO.StringIO(docstr)input = libxml2.inputBuffer(f)reader = input.newTextReader("error")reader.RelaxNGSetSchema(rngs)ret = reader.Read()while ret == 1:    ret = reader.Read()if ret != 0:    print "Error parsing the document"    sys.exit(1)if reader.IsValid() != 0:    print "Document failed to detect the validation error"    sys.exit(1)if err != expect:    print "Did not get the expected error message:"    print err    sys.exit(1)## cleanup#del fdel inputdel readerdel rngslibxml2.relaxNGCleanupTypes()# 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 + -