CONTENTS CONTENTS
8.1 The Element class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.1.1 Elements are lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.1.2 Elements carry attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.1.3 Elements contain text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.1.4 Using XPath to find text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8.1.5 Tree iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.1.6 Serialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.2 The ElementTree class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
8.3 Parsing from strings and files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8.3.1 The fromstring() function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8.3.2 The XML() function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8.3.3 The parse() function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8.3.4 Parser objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.3.5 Incremental parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.3.6 Event-driven parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
8.4 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.5 The E-factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.6 ElementPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
9 APIs specific to lxml.etree 70
9.1 lxml.etree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
9.2 Other Element APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
9.3 Trees and Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
9.4 Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
9.5 Error handling on exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
9.6 Error logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
9.7 Serialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
9.8 CDATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
9.9 XInclude and ElementInclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
9.10 write
c14n on ElementTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
10 Parsing XML and HTML with lxml 77
10.1 Parsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
10.1.1 Parser options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
10.1.2 Error log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
10.1.3 Parsing HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
10.1.4 Doctype information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
10.2 The target parser interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
10.3 The feed parser interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
10.4 iterparse and iterwalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
10.4.1 Selective tag events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
10.4.2 Comments and PIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
10.4.3 Modifying the tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
10.4.4 iterwalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10.5 Python unicode strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10.5.1 Serialising to Unicode strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
11 Validation with lxml 88
11.1 Validation at parse time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11.2 DTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
11.3 RelaxNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
11.4 XMLSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
11.5 Schematron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
12 XPath and XSLT with lxml 94
4