From 8a683df87e640764a03bfdbf4d7e671156e8b61c Mon Sep 17 00:00:00 2001
From: JinWang An Frequently asked questions on lxml. See also the notes on compatibility to
ElementTree. lxml.etree tries to follow established APIs wherever possible. Sometimes,
however, the need to expose a feature in an easy way led to the invention of a
@@ -530,7 +530,7 @@ example:lxml FAQ - Frequently Asked Questions
+lxml FAQ - Frequently Asked Questions
APIs specific to lxml.etree
+APIs specific to lxml.etree
{
'
ET
'
:
<capsule object "PyObject *" at 0x7f9baf...
+ __pyx_capi__ = {
'
ET
'
:
<capsule object "PyObject *" at 0x7f6cce...
- |
got
.
Version: - 4.3.1 + 4.3.2
(
4,
3,
1,
0)
+ LXML_VERSION = (
4,
3,
2,
0)
{
'
adoptExternalDocument
'
:
<capsule object "stru...
|
,
-
9%&\?;=~
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
lxml.etree.
Version:
- 4.3.1
+ 4.3.2
@@ -1137,7 +1137,7 @@ elements. Pass 'string', for example, to make string values the default.
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
- __pyx_capi__ = {
'
_getNsTag
'
:
<capsule object "PyObject *(PyObj...
+ __pyx_capi__ = {
'
_getNsTag
'
:
<capsule object "PyObject *(PyObj...
@@ -282,8 +282,8 @@ c0>}">{
'
Value:
-{
'
_getNsTag
'
:
<capsule object "PyObject *(PyObject *)" at 0x7f9baf60e6
-c0>}
+{
'
_getNsTag
'
:
<capsule object "PyObject *(PyObject *)" at 0x7f6ccdd4ff
+00>}
@@ -322,7 +322,7 @@ c0>}
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
Generated by Epydoc 3.0.1
- on Fri Feb 8 19:32:40 2019
+ on Thu Feb 28 20:36:14 2019
tag)
790 self.assertEqual([], result)
791
- 793 # this would cause a crash in the past
+ 793 # this would cause a crash in the past
794 fromstring
- 795 root = 795 root = fromstring('<html><p></p>x</html>')
+ 796 for elem in root:
+ 797 elem.tail = ''
+ 798
+ 800 # this would cause a crash in the past
+ 801 fromstring = self.etree.etree.fromstring('<html><p></p>x</html>')
- 796 for elem in root:
- 797 elem.tail = ''
- 798
- 800 fromstring
+ 802 root = fromstring('<html><p></p>x</html>')
+ 803 for elem in root:
+ 804 elem.tail = None
+ 805
+ 807 XML = self.XML = self.etree.etree.XML
- 801 root = XML
+ 808 root = XML(_bytes('<doc><one/><two>Two</two>Hm<three/></doc>'))
- 802 result = []
- 803 for el in reversed(root):
- 804 result.append(el.XML(_bytes('<doc><one/><two>Two</two>Hm<three/></doc>'))
+ 809 result = []
+ 810 for el in reversed(root):
+ 811 result.append(el.tag)
- 805 self.assertEqual(['three', 'two', 'one'], result)
- 806
- 813
+ 815 XML = self.XML = self.etree.etree.XML
- 809
- 810 root = XML
+ 816
+ 817 root = XML(_bytes('<doc><one/><two>Two</two>Hm<three/></doc>'))
- 811 result = []
- 812 XML(_bytes('<doc><one/><two>Two</two>Hm<three/></doc>'))
+ 818 result = []
+ 819 add = True
- 813 for el in root:
- 814 result.append(el.add = True
+ 820 for el in root:
+ 821 result.append(el.tag)
- 815 if tag)
+ 822 if add:
- 816 self.add:
+ 823 self.etree.SubElement(root, 'four')
- 817 etree.SubElement(root, 'four')
+ 824 add = False
- 818 self.assertEqual(['one', 'two', 'three', 'four'], result)
- 819
- 826
+ 828 XML = self.XML = self.etree.etree.XML
- 822
- 823 root = XML
+ 829
+ 830 root = XML(_bytes('<doc><one/><two>Two</two>Hm<three/></doc>'))
- 824 result = []
- 825 for el in root:
- 826 result.append(el.XML(_bytes('<doc><one/><two>Two</two>Hm<three/></doc>'))
+ 831 result = []
+ 832 for el in root:
+ 833 result.append(el.tag)
- 827 del root[-1]
- 828 self.assertEqual(['one', 'two'], result)
- 829
- 836
+ 838 XML = self.XML = self.etree.etree.XML
- 832
- 833 root = XML
+ 839
+ 840 root = XML(_bytes('<doc><one/><two/></doc>'))
- 834 result = []
- 835 for el0 in root:
- 836 result.append(el0.XML(_bytes('<doc><one/><two/></doc>'))
+ 841 result = []
+ 842 for el0 in root:
+ 843 result.append(el0.tag)
- 837 for el1 in root:
- 838 result.append(el1.tag)
+ 844 for el1 in root:
+ 845 result.append(el1.tag)
- 839 self.assertEqual(['one','one', 'two', 'two', 'one', 'two'], result)
- 840
- 841 required_versions_ET['test_itertext'] = (1,3)
- 843 # ET 1.3+
- 844 tag)
+ 846 self.assertEqual(['one','one', 'two', 'two', 'one', 'two'], result)
+ 847
+ 848 required_versions_ET['test_itertext'] = (1,3)
+ 850 # ET 1.3+
+ 851 XML = self.XML = self.etree.etree.XML
- 845 root = XML
+ 852 root = XML(_bytes("<root>RTEXT<a></a>ATAIL<b/><c>CTEXT</c>CTAIL</root>"))
- 846
- 847 XML(_bytes("<root>RTEXT<a></a>ATAIL<b/><c>CTEXT</c>CTAIL</root>"))
+ 853
+ 854 text = list(root.itertext())
- 848 self.assertEqual(["RTEXT", "ATAIL", "CTEXT", "CTAIL"],
- 849 text = list(root.itertext())
+ 855 self.assertEqual(["RTEXT", "ATAIL", "CTEXT", "CTAIL"],
+ 856 text)
- 850
- 851 required_versions_ET['test_itertext_child'] = (1,3)
- 857
+ 858 required_versions_ET['test_itertext_child'] = (1,3)
+ 860 # ET 1.3+
+ 861 XML = self.XML = self.etree.etree.XML
- 855 root = XML
+ 862 root = XML(_bytes("<root>RTEXT<a></a>ATAIL<b/><c>CTEXT</c>CTAIL</root>"))
- 856
- 857 XML(_bytes("<root>RTEXT<a></a>ATAIL<b/><c>CTEXT</c>CTAIL</root>"))
+ 863
+ 864 text = list(root[2].itertext())
- 858 self.assertEqual(["CTEXT"],
- 859 text = list(root[2].itertext())
+ 865 self.assertEqual(["CTEXT"],
+ 866 text)
- 860
- 862 text)
+ 867
+ 869 XML = self.XML = self.etree.etree.XML
- 863 root = XML
+ 870 root = XML(_bytes('<a><b><c/></b><b/><c><b/></c></a>'))
- 864 self.assertEqual(len(list(root.findall("c"))), 1)
- 865 self.assertEqual(len(list(root.findall(".//c"))), 2)
- 866 self.assertEqual(len(list(root.findall(".//b"))), 3)
- 867 self.assertEqual(len(list(root.findall(".//b"))[0]), 1)
- 868 self.assertEqual(len(list(root.findall(".//b"))[1]), 0)
- 869 self.assertEqual(len(list(root.findall(".//b"))[2]), 0)
- 870
- 872 XML(_bytes('<a><b><c/></b><b/><c><b/></c></a>'))
+ 871 self.assertEqual(len(list(root.findall("c"))), 1)
+ 872 self.assertEqual(len(list(root.findall(".//c"))), 2)
+ 873 self.assertEqual(len(list(root.findall(".//b"))), 3)
+ 874 self.assertEqual(len(list(root.findall(".//b"))[0]), 1)
+ 875 self.assertEqual(len(list(root.findall(".//b"))[1]), 0)
+ 876 self.assertEqual(len(list(root.findall(".//b"))[2]), 0)
+ 877
+ 879 XML = self.XML = self.etree.etree.XML
- 873 root = XML
+ 880 root = XML(_bytes('<a xmlns:x="X" xmlns:y="Y"><x:b><c/></x:b><b/><c><x:b/><b/></c><b/></a>'))
- 874 self.assertEqual(len(list(root.findall(".//{X}b"))), 2)
- 875 self.assertEqual(len(list(root.findall(".//b"))), 3)
- 876 self.assertEqual(len(list(root.findall("b"))), 2)
- 877
- 879 Element = self.etree.Element
- 880
- 881 el = Element('tag', foo='Foo', bar='Bar')
- 882 self.assertEqual('Foo', el.attrib['foo'])
- 883 self.assertEqual('Bar', el.attrib['bar'])
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1001', 'XML', 'link-259');">XML(_bytes('<a xmlns:x="X" xmlns:y="Y"><x:b><c/></x:b><b/><c><x:b/><b/></c><b/></a>'))
+ 881 self.assertEqual(len(list(root.findall(".//{X}b"))), 2)
+ 882 self.assertEqual(len(list(root.findall(".//b"))), 3)
+ 883 self.assertEqual(len(list(root.findall("b"))), 2)
884
-