write tutorial read descargar python xml validation dtd

tutorial - read fasta python



Cómo validar xml contra un archivo DTD en Python (2)

Necesito validar una cadena XML (y no un archivo) contra un archivo de descripción DTD.

¿Cómo se puede hacer eso en python ?


del directorio de ejemplos en las vinculaciones libxml2 python:

#!/usr/bin/python -u import libxml2 import sys # Memory debug specific libxml2.debugMemory(1) dtd="""<!ELEMENT foo EMPTY>""" instance="""<?xml version="1.0"?> <foo></foo>""" 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


Otra buena opción es la validación de lxml que me parece bastante agradable de usar.

Un ejemplo simple tomado del sitio lxml:

from StringIO import StringIO from lxml import etree dtd = etree.DTD(StringIO("""<!ELEMENT foo EMPTY>""")) root = etree.XML("<foo/>") print(dtd.validate(root)) # True root = etree.XML("<foo>bar</foo>") print(dtd.validate(root)) # False print(dtd.error_log.filter_from_errors()) # <string>:1:0:ERROR:VALID:DTD_NOT_EMPTY: Element foo was declared EMPTY this one has content