Menu
Like the tool?
Help making it better!
Your donation helps!
  • lxml
    • lxml
      • Introduction
      • Support the project
      • Documentation
      • Download
      • Mailing list
      • Bug tracker
      • License
      • Old Versions
      • Project income report
      • Legal Notice for Donations
    • Why lxml?
      • Motto
      • Aims
    • Installing lxml
      • Where to get it
      • Requirements
      • Installation
      • Building lxml from dev sources
      • Using lxml with python-libxml2
      • Source builds on MS Windows
      • Source builds on MacOS-X
    • Benchmarks and Speed
      • General notes
      • How to read the timings
      • Parsing and Serialising
      • The ElementTree API
      • XPath
      • A longer example
      • lxml.objectify
    • ElementTree compatibility of lxml.etree
    • lxml FAQ - Frequently Asked Questions
      • General Questions
      • Installation
      • Contributing
      • Bugs
      • Threading
      • Parsing and Serialisation
      • XPath and Document Traversal
  • Developing with lxml
    • The lxml.etree Tutorial
      • The Element class
      • The ElementTree class
      • Parsing from strings and files
      • Namespaces
      • The E-factory
      • ElementPath
    • API reference
    • APIs specific to lxml.etree
      • lxml.etree
      • Other Element APIs
      • Trees and Documents
      • Iteration
      • Error handling on exceptions
      • Error logging
      • Serialisation
      • Incremental XML generation
      • CDATA
      • XInclude and ElementInclude
    • Parsing XML and HTML with lxml
      • Parsers
      • The target parser interface
      • The feed parser interface
      • Incremental event parsing
      • iterparse and iterwalk
      • Python unicode strings
    • Validation with lxml
      • Validation at parse time
      • DTD
      • RelaxNG
      • XMLSchema
      • Schematron
      • (Pre-ISO-Schematron)
    • XPath and XSLT with lxml
      • XPath
      • XSLT
    • lxml.objectify
      • The lxml.objectify API
      • Asserting a Schema
      • ObjectPath
      • Python data types
      • How data types are matched
      • What is different from lxml.etree?
    • lxml.html
      • Parsing HTML
      • HTML Element Methods
      • Running HTML doctests
      • Creating HTML with the E-factory
      • Working with links
      • Forms
      • HTML Diff
      • Examples
    • lxml.cssselect
      • The CSSSelector class
      • The cssselect method
      • Supported Selectors
      • Namespaces
    • BeautifulSoup Parser
      • Parsing with the soupparser
      • Entity handling
      • Using soupparser as a fallback
      • Using only the encoding detection
    • html5lib Parser
      • Differences to regular HTML parsing
      • Function Reference
  • Extending lxml
    • Document loading and URL resolving
      • XML Catalogs
      • URI Resolvers
      • Document loading in context
      • I/O access control in XSLT
    • Python extensions for XPath and XSLT
      • XPath Extension functions
      • XSLT extension elements
    • Using custom Element classes in lxml
      • Background on Element proxies
      • Element initialization
      • Setting up a class lookup scheme
      • Generating XML with custom classes
      • Implementing namespaces
    • Sax support
      • Building a tree from SAX events
      • Producing SAX events from an ElementTree or Element
      • Interfacing with pulldom/minidom
    • The public C-API of lxml.etree
      • Passing generated trees through Python
      • Writing external modules in Cython
      • Writing external modules in C
  • Developing lxml
    • How to build lxml from source
      • Cython
      • Github, git and hg
      • Building the sources
      • Running the tests and reporting errors
      • Building an egg or wheel
      • Building lxml on MacOS-X
      • Static linking on Windows
      • Building Debian packages from SVN sources
    • How to read the source of lxml
      • What is Cython?
      • Where to start?
      • lxml.etree