Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import tempfile
- from lxml import etree
- print("%-20s: %s" % ('Python', sys.version_info))
- print("%-20s: %s" % ('lxml.etree', etree.LXML_VERSION))
- print("%-20s: %s" % ('libxml used', etree.LIBXML_VERSION))
- print("%-20s: %s" % ('libxml compiled', etree.LIBXML_COMPILED_VERSION))
- print("%-20s: %s" % ('libxslt used', etree.LIBXSLT_VERSION))
- print("%-20s: %s" % ('libxslt compiled', etree.LIBXSLT_COMPILED_VERSION))
- print
- print "parsing with resolve_entities=False, no DOCTYPE"
- parser = etree.XMLParser(resolve_entities=False)
- try:
- tree = etree.XML("""<test>1<a href="übel">ö</a></test>""", parser=parser)
- except etree.XMLSyntaxError as e:
- print e
- print
- print "parsing with resolve_entities=False, dummy DOCTYPE"
- try:
- tree = etree.XML("""<!DOCTYPE test SYSTEM ""><test>1<a href="übel">ö</a></test>""", parser=parser)
- print tree[:]
- print tree.find('.//a').attrib['href']
- print etree.tostring(tree)
- except etree.XMLSyntaxError as e:
- print e
- print
- print "parsing with actual DOCTYPE declaring the entities"
- dtdfile = tempfile.NamedTemporaryFile(suffix='.dtd', delete=False)
- dtdfile.write("""<!ELEMENT test (#PCDATA|a)*> <!ELEMENT a (#PCDATA)> <!ATTLIST a href CDATA #REQUIRED> <!ENTITY uuml "ü"> <!ENTITY ouml "ö">""")
- dtdfile.close()
- try:
- tree = etree.XML("""<!DOCTYPE test SYSTEM "{}"><test>1<a href="übel">ö</a></test>""".format(dtdfile.name), parser=parser)
- print tree[:]
- print tree.find('.//a').attrib['href']
- print etree.tostring(tree)
- except etree.XMLSyntaxError as e:
- print e
- print
- print "parsing with actual DOCTYPE declaring the entities -- and dtd_validate=True"
- parser = etree.XMLParser(resolve_entities=False, dtd_validation=True)
- try:
- tree = etree.XML("""<!DOCTYPE test SYSTEM "{}"><test>1<a href="übel">ö</a></test>""".format(dtdfile.name), parser=parser)
- print tree[:]
- print tree.find('.//a').attrib['href']
- print etree.tostring(tree)
- except etree.XMLSyntaxError as e:
- print e
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement