当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中针对DTD文件验证xml

如何解决《如何在Python中针对DTD文件验证xml》经验,为你挑选了2个好方法。

我需要针对DTD描述文件验证XML字符串(而不是文件).

怎么办python



1> 小智..:

另一个不错的选择是lxml的验证,我发现它非常令人愉快.

从lxml站点获取的一个简单示例:

from StringIO import StringIO

from lxml import etree

dtd = etree.DTD(StringIO(""""""))
root = etree.XML("")
print(dtd.validate(root))
# True

root = etree.XML("bar")
print(dtd.validate(root))
# False
print(dtd.error_log.filter_from_errors())
# :1:0:ERROR:VALID:DTD_NOT_EMPTY: Element foo was declared EMPTY this one has content



2> 小智..:

来自libxml2 python绑定中的examples目录:

#!/usr/bin/python -u
import libxml2
import sys

# Memory debug specific
libxml2.debugMemory(1)

dtd=""""""
instance="""
"""

dtd = libxml2.parseDTD(None, 'test.dtd')
ctxt = libxml2.newValidCtxt()
doc = libxml2.parseDoc(instance)
ret = doc.validateDtd(ctxt, dtd)
if ret != 1:
    print "error doing DTD validation"
    sys.exit(1)

doc.freeDoc()
dtd.freeDtd()
del dtd
del ctxt

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有