1 <?xml version="1.0" encoding="ascii"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "DTD/xhtml1-transitional.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6 <title>lxml.etree.PythonElementClassLookup</title>
7 <link rel="stylesheet" href="epydoc.css" type="text/css" />
8 <script type="text/javascript" src="epydoc.js"></script>
11 <body bgcolor="white" text="black" link="blue" vlink="#204080"
13 <!-- ==================== NAVIGATION BAR ==================== -->
14 <table class="navbar" border="0" width="100%" cellpadding="0"
15 bgcolor="#a0c0ff" cellspacing="0">
18 <th> <a
19 href="lxml-module.html">Home</a> </th>
22 <th> <a
23 href="module-tree.html">Trees</a> </th>
26 <th> <a
27 href="identifier-index.html">Indices</a> </th>
30 <th> <a
31 href="help.html">Help</a> </th>
33 <!-- Project homepage -->
34 <th class="navbar" align="right" width="100%">
35 <table border="0" cellpadding="0" cellspacing="0">
36 <tr><th class="navbar" align="center"
37 ><a class="navbar" target="_top" href="/">lxml API</a></th>
41 <table width="100%" cellpadding="0" cellspacing="0">
44 <span class="breadcrumbs">
45 <a href="lxml-module.html">Package lxml</a> ::
46 <a href="lxml.etree-module.html">Module etree</a> ::
47 Class PythonElementClassLookup
51 <table cellpadding="0" cellspacing="0">
52 <!-- hide/show private -->
53 <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
54 onclick="toggle_private();">hide private</a>]</span></td></tr>
55 <tr><td align="right"><span class="options"
56 >[<a href="frames.html" target="_top">frames</a
57 >] | <a href="lxml.etree.PythonElementClassLookup-class.html"
58 target="_top">no frames</a>]</span></td></tr>
63 <!-- ==================== CLASS DESCRIPTION ==================== -->
64 <h1 class="epydoc">Class PythonElementClassLookup</h1><p class="nomargin-top"></p>
65 <pre class="base-tree">
68 <a href="lxml.etree.ElementClassLookup-class.html">ElementClassLookup</a> --+
70 <a href="lxml.etree.FallbackElementClassLookup-class.html">FallbackElementClassLookup</a> --+
72 <strong class="uidshort">PythonElementClassLookup</strong>
76 <p>PythonElementClassLookup(self, fallback=None)
77 Element class lookup based on a subclass method.</p>
78 <p>This class lookup scheme allows access to the entire XML tree in
79 read-only mode. To use it, re-implement the <tt class="rst-docutils literal">lookup(self, doc,
80 root)</tt> method in a subclass:</p>
81 <pre class="rst-literal-block">
82 from lxml import etree, pyclasslookup
84 class MyElementClass(etree.ElementBase):
87 class MyLookup(pyclasslookup.PythonElementClassLookup):
88 def lookup(self, doc, root):
89 if root.tag == "sometag":
93 if child.tag == "someothertag":
98 <p>If you return None from this method, the fallback will be called.</p>
99 <p>The first argument is the opaque document instance that contains
100 the Element. The second argument is a lightweight Element proxy
101 implementation that is only valid during the lookup. Do not try
102 to keep a reference to it. Once the lookup is done, the proxy
104 <p>Also, you cannot wrap such a read-only Element in an ElementTree,
105 and you must take care not to keep a reference to them outside of
106 the <a href="lxml.etree.PythonElementClassLookup-class.html#lookup" class="link">lookup()</a> method.</p>
107 <p>Note that the API of the Element objects is not complete. It is
108 purely read-only and does not support all features of the normal
109 <a href="lxml.etree-module.html" class="link">lxml.etree</a> API (such as XPath, extended slicing or some
110 iteration methods).</p>
111 <p>See <a class="rst-reference external" href="http://codespeak.net/lxml/element_classes.html" target="_top">http://codespeak.net/lxml/element_classes.html</a></p>
113 <!-- ==================== INSTANCE METHODS ==================== -->
114 <a name="section-InstanceMethods"></a>
115 <table class="summary" border="1" cellpadding="3"
116 cellspacing="0" width="100%" bgcolor="white">
117 <tr bgcolor="#70b0f0" class="table-header">
118 <td colspan="2" class="table-header">
119 <table border="0" cellpadding="0" cellspacing="0" width="100%">
121 <td align="left"><span class="table-header">Instance Methods</span></td>
122 <td align="right" valign="top"
123 ><span class="options">[<a href="#section-InstanceMethods"
124 class="privatelink" onclick="toggle_private();"
125 >hide private</a>]</span></td>
131 <td width="15%" align="right" valign="top" class="summary">
132 <span class="summary-type">a new object with type S, a subtype of T</span>
133 </td><td class="summary">
134 <table width="100%" cellpadding="0" cellspacing="0" border="0">
136 <td><span class="summary-sig"><a href="lxml.etree.PythonElementClassLookup-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
137 <span class="summary-sig-arg">S</span>,
138 <span class="summary-sig-arg">...</span>)</span></td>
139 <td align="right" valign="top">
149 <td width="15%" align="right" valign="top" class="summary">
150 <span class="summary-type"> </span>
151 </td><td class="summary">
152 <table width="100%" cellpadding="0" cellspacing="0" border="0">
154 <td><span class="summary-sig"><a name="lookup"></a><span class="summary-sig-name">lookup</span>(<span class="summary-sig-arg">self</span>,
155 <span class="summary-sig-arg">doc</span>,
156 <span class="summary-sig-arg">element</span>)</span><br />
157 Override this method to implement your own lookup scheme.</td>
158 <td align="right" valign="top">
168 <td colspan="2" class="summary">
169 <p class="indent-wrapped-lines"><b>Inherited from <code><a href="lxml.etree.FallbackElementClassLookup-class.html">FallbackElementClassLookup</a></code></b>:
170 <code><a href="lxml.etree.FallbackElementClassLookup-class.html#__init__">__init__</a></code>,
171 <code><a href="lxml.etree.FallbackElementClassLookup-class.html#set_fallback">set_fallback</a></code>
173 <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
174 <code>__delattr__</code>,
175 <code>__format__</code>,
176 <code>__getattribute__</code>,
177 <code>__hash__</code>,
178 <code>__reduce__</code>,
179 <code>__reduce_ex__</code>,
180 <code>__repr__</code>,
181 <code>__setattr__</code>,
182 <code>__sizeof__</code>,
183 <code>__str__</code>,
184 <code>__subclasshook__</code>
189 <!-- ==================== PROPERTIES ==================== -->
190 <a name="section-Properties"></a>
191 <table class="summary" border="1" cellpadding="3"
192 cellspacing="0" width="100%" bgcolor="white">
193 <tr bgcolor="#70b0f0" class="table-header">
194 <td colspan="2" class="table-header">
195 <table border="0" cellpadding="0" cellspacing="0" width="100%">
197 <td align="left"><span class="table-header">Properties</span></td>
198 <td align="right" valign="top"
199 ><span class="options">[<a href="#section-Properties"
200 class="privatelink" onclick="toggle_private();"
201 >hide private</a>]</span></td>
207 <td colspan="2" class="summary">
208 <p class="indent-wrapped-lines"><b>Inherited from <code><a href="lxml.etree.FallbackElementClassLookup-class.html">FallbackElementClassLookup</a></code></b>:
209 <code><a href="lxml.etree.FallbackElementClassLookup-class.html#fallback">fallback</a></code>
211 <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
212 <code>__class__</code>
217 <!-- ==================== METHOD DETAILS ==================== -->
218 <a name="section-MethodDetails"></a>
219 <table class="details" border="1" cellpadding="3"
220 cellspacing="0" width="100%" bgcolor="white">
221 <tr bgcolor="#70b0f0" class="table-header">
222 <td colspan="2" class="table-header">
223 <table border="0" cellpadding="0" cellspacing="0" width="100%">
225 <td align="left"><span class="table-header">Method Details</span></td>
226 <td align="right" valign="top"
227 ><span class="options">[<a href="#section-MethodDetails"
228 class="privatelink" onclick="toggle_private();"
229 >hide private</a>]</span></td>
235 <a name="__new__"></a>
237 <table class="details" border="1" cellpadding="3"
238 cellspacing="0" width="100%" bgcolor="white">
240 <table width="100%" cellpadding="0" cellspacing="0" border="0">
241 <tr valign="top"><td>
242 <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
243 <span class="sig-arg">S</span>,
244 <span class="sig-arg">...</span>)</span>
246 </td><td align="right" valign="top"
253 <dt>Returns: a new object with type S, a subtype of T</dt>
261 <!-- ==================== NAVIGATION BAR ==================== -->
262 <table class="navbar" border="0" width="100%" cellpadding="0"
263 bgcolor="#a0c0ff" cellspacing="0">
266 <th> <a
267 href="lxml-module.html">Home</a> </th>
270 <th> <a
271 href="module-tree.html">Trees</a> </th>
274 <th> <a
275 href="identifier-index.html">Indices</a> </th>
278 <th> <a
279 href="help.html">Help</a> </th>
281 <!-- Project homepage -->
282 <th class="navbar" align="right" width="100%">
283 <table border="0" cellpadding="0" cellspacing="0">
284 <tr><th class="navbar" align="center"
285 ><a class="navbar" target="_top" href="/">lxml API</a></th>
289 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
291 <td align="left" class="footer">
292 Generated by Epydoc 3.0.1
293 on Thu Jul 9 18:29:53 2020
295 <td align="right" class="footer">
296 <a target="mainFrame" href="http://epydoc.sourceforge.net"
297 >http://epydoc.sourceforge.net</a>
302 <script type="text/javascript">
304 // Private objects are initially displayed (because if
305 // javascript is turned off then we want them to be
306 // visible); but by default, we want to hide them. So hide
307 // them unless we have a cookie that says to show them.