7a8bf40a97b81c80c5a7a6de46cbb596310dce16
[platform/upstream/python-lxml.git] / doc / html / api / lxml.etree.PythonElementClassLookup-class.html
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">
5 <head>
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>
9 </head>
10
11 <body bgcolor="white" text="black" link="blue" vlink="#204080"
12       alink="#204080">
13 <!-- ==================== NAVIGATION BAR ==================== -->
14 <table class="navbar" border="0" width="100%" cellpadding="0"
15        bgcolor="#a0c0ff" cellspacing="0">
16   <tr valign="middle">
17   <!-- Home link -->
18       <th>&nbsp;&nbsp;&nbsp;<a
19         href="lxml-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
20
21   <!-- Tree link -->
22       <th>&nbsp;&nbsp;&nbsp;<a
23         href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
24
25   <!-- Index link -->
26       <th>&nbsp;&nbsp;&nbsp;<a
27         href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
28
29   <!-- Help link -->
30       <th>&nbsp;&nbsp;&nbsp;<a
31         href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
32
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>
38           </tr></table></th>
39   </tr>
40 </table>
41 <table width="100%" cellpadding="0" cellspacing="0">
42   <tr valign="top">
43     <td width="100%">
44       <span class="breadcrumbs">
45         <a href="lxml-module.html">Package&nbsp;lxml</a> ::
46         <a href="lxml.etree-module.html">Module&nbsp;etree</a> ::
47         Class&nbsp;PythonElementClassLookup
48       </span>
49     </td>
50     <td>
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&nbsp;private</a>]</span></td></tr>
55         <tr><td align="right"><span class="options"
56             >[<a href="frames.html" target="_top">frames</a
57             >]&nbsp;|&nbsp;<a href="lxml.etree.PythonElementClassLookup-class.html"
58             target="_top">no&nbsp;frames</a>]</span></td></tr>
59       </table>
60     </td>
61   </tr>
62 </table>
63 <!-- ==================== CLASS DESCRIPTION ==================== -->
64 <h1 class="epydoc">Class PythonElementClassLookup</h1><p class="nomargin-top"></p>
65 <pre class="base-tree">
66             object --+        
67                      |        
68     <a href="lxml.etree.ElementClassLookup-class.html">ElementClassLookup</a> --+    
69                          |    
70 <a href="lxml.etree.FallbackElementClassLookup-class.html">FallbackElementClassLookup</a> --+
71                              |
72                             <strong class="uidshort">PythonElementClassLookup</strong>
73 </pre>
74
75 <hr />
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
83
84 class MyElementClass(etree.ElementBase):
85     honkey = True
86
87 class MyLookup(pyclasslookup.PythonElementClassLookup):
88     def lookup(self, doc, root):
89         if root.tag == &quot;sometag&quot;:
90             return MyElementClass
91         else:
92             for child in root:
93                 if child.tag == &quot;someothertag&quot;:
94                     return MyElementClass
95         # delegate to default
96         return None
97 </pre>
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
103 will be invalid.</p>
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>
112
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%">
120       <tr valign="top">
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>
126       </tr>
127     </table>
128   </td>
129 </tr>
130 <tr>
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">
135         <tr>
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">
140             
141             
142           </td>
143         </tr>
144       </table>
145       
146     </td>
147   </tr>
148 <tr>
149     <td width="15%" align="right" valign="top" class="summary">
150       <span class="summary-type">&nbsp;</span>
151     </td><td class="summary">
152       <table width="100%" cellpadding="0" cellspacing="0" border="0">
153         <tr>
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">
159             
160             
161           </td>
162         </tr>
163       </table>
164       
165     </td>
166   </tr>
167   <tr>
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>
172       </p>
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>
185       </p>
186     </td>
187   </tr>
188 </table>
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%">
196       <tr valign="top">
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>
202       </tr>
203     </table>
204   </td>
205 </tr>
206   <tr>
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>
210       </p>
211     <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
212       <code>__class__</code>
213       </p>
214     </td>
215   </tr>
216 </table>
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%">
224       <tr valign="top">
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>
230       </tr>
231     </table>
232   </td>
233 </tr>
234 </table>
235 <a name="__new__"></a>
236 <div>
237 <table class="details" border="1" cellpadding="3"
238        cellspacing="0" width="100%" bgcolor="white">
239 <tr><td>
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>
245   </h3>
246   </td><td align="right" valign="top"
247     >&nbsp;
248     </td>
249   </tr></table>
250   
251   
252   <dl class="fields">
253     <dt>Returns: a new object with type S, a subtype of T</dt>
254     <dt>Overrides:
255         object.__new__
256     </dt>
257   </dl>
258 </td></tr></table>
259 </div>
260 <br />
261 <!-- ==================== NAVIGATION BAR ==================== -->
262 <table class="navbar" border="0" width="100%" cellpadding="0"
263        bgcolor="#a0c0ff" cellspacing="0">
264   <tr valign="middle">
265   <!-- Home link -->
266       <th>&nbsp;&nbsp;&nbsp;<a
267         href="lxml-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
268
269   <!-- Tree link -->
270       <th>&nbsp;&nbsp;&nbsp;<a
271         href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
272
273   <!-- Index link -->
274       <th>&nbsp;&nbsp;&nbsp;<a
275         href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
276
277   <!-- Help link -->
278       <th>&nbsp;&nbsp;&nbsp;<a
279         href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
280
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>
286           </tr></table></th>
287   </tr>
288 </table>
289 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
290   <tr>
291     <td align="left" class="footer">
292     Generated by Epydoc 3.0.1
293     on Wed Jan 29 12:26:21 2020
294     </td>
295     <td align="right" class="footer">
296       <a target="mainFrame" href="http://epydoc.sourceforge.net"
297         >http://epydoc.sourceforge.net</a>
298     </td>
299   </tr>
300 </table>
301
302 <script type="text/javascript">
303   <!--
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.
308   checkCookie();
309   // -->
310 </script>
311 </body>
312 </html>