1 # xml.etree test for cElementTree
6 from test
import support
8 ET
= support
.import_module('xml.etree.cElementTree')
21 <body xmlns="http://effbot.org/ns">
34 >>> from xml.etree import cElementTree
37 def check_method(method
):
38 if not hasattr(method
, '__call__'):
39 print(method
, "not callable")
41 def serialize(ET
, elem
):
44 tree
= ET
.ElementTree(elem
)
46 return file.getvalue()
51 def summarize_list(seq
):
52 return list(map(summarize
, seq
))
56 Test element tree interface.
58 >>> element = ET.Element("tag", key="value")
59 >>> tree = ET.ElementTree(element)
61 Make sure all standard element methods exist.
63 >>> check_method(element.append)
64 >>> check_method(element.insert)
65 >>> check_method(element.remove)
66 >>> check_method(element.getchildren)
67 >>> check_method(element.find)
68 >>> check_method(element.findall)
69 >>> check_method(element.findtext)
70 >>> check_method(element.clear)
71 >>> check_method(element.get)
72 >>> check_method(element.set)
73 >>> check_method(element.keys)
74 >>> check_method(element.items)
75 >>> check_method(element.getiterator)
77 Basic method sanity checks.
79 >>> serialize(ET, element) # 1
81 >>> subelement = ET.Element("subtag")
82 >>> element.append(subelement)
83 >>> serialize(ET, element) # 2
84 '<tag key="value"><subtag /></tag>'
85 >>> element.insert(0, subelement)
86 >>> serialize(ET, element) # 3
87 '<tag key="value"><subtag /><subtag /></tag>'
88 >>> element.remove(subelement)
89 >>> serialize(ET, element) # 4
90 '<tag key="value"><subtag /></tag>'
91 >>> element.remove(subelement)
92 >>> serialize(ET, element) # 5
94 >>> element.remove(subelement)
95 Traceback (most recent call last):
96 ValueError: list.remove(x): x not in list
97 >>> serialize(ET, element) # 6
103 Test find methods (including xpath syntax).
105 >>> elem = ET.XML(SAMPLE_XML)
106 >>> elem.find("tag").tag
108 >>> ET.ElementTree(elem).find("tag").tag
110 >>> elem.find("section/tag").tag
112 >>> ET.ElementTree(elem).find("section/tag").tag
114 >>> elem.findtext("tag")
116 >>> elem.findtext("tog")
117 >>> elem.findtext("tog", "default")
119 >>> ET.ElementTree(elem).findtext("tag")
121 >>> elem.findtext("section/tag")
123 >>> ET.ElementTree(elem).findtext("section/tag")
125 >>> summarize_list(elem.findall("tag"))
127 >>> summarize_list(elem.findall("*"))
128 ['tag', 'tag', 'section']
129 >>> summarize_list(elem.findall(".//tag"))
130 ['tag', 'tag', 'tag']
131 >>> summarize_list(elem.findall("section/tag"))
133 >>> summarize_list(elem.findall("section//tag"))
135 >>> summarize_list(elem.findall("section/*"))
137 >>> summarize_list(elem.findall("section//*"))
139 >>> summarize_list(elem.findall("section/.//*"))
141 >>> summarize_list(elem.findall("*/*"))
143 >>> summarize_list(elem.findall("*//*"))
145 >>> summarize_list(elem.findall("*/tag"))
147 >>> summarize_list(elem.findall("*/./tag"))
149 >>> summarize_list(elem.findall("./tag"))
151 >>> summarize_list(elem.findall(".//tag"))
152 ['tag', 'tag', 'tag']
153 >>> summarize_list(elem.findall("././tag"))
155 >>> summarize_list(ET.ElementTree(elem).findall("/tag"))
157 >>> summarize_list(ET.ElementTree(elem).findall("./tag"))
159 >>> elem = ET.XML(SAMPLE_XML_NS)
160 >>> summarize_list(elem.findall("tag"))
162 >>> summarize_list(elem.findall("{http://effbot.org/ns}tag"))
163 ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
164 >>> summarize_list(elem.findall(".//{http://effbot.org/ns}tag"))
165 ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
171 >>> element = ET.XML("<html><body>text</body></html>")
172 >>> ET.ElementTree(element).write(sys.stdout)
173 <html><body>text</body></html>
174 >>> element = ET.fromstring("<html><body>text</body></html>")
175 >>> ET.ElementTree(element).write(sys.stdout)
176 <html><body>text</body></html>
177 >>> print(ET.tostring(element))
178 <html><body>text</body></html>
179 >>> print(repr(ET.tostring(element, "ascii")))
180 b"<?xml version='1.0' encoding='ascii'?>\n<html><body>text</body></html>"
181 >>> _, ids = ET.XMLID("<html><body>text</body></html>")
184 >>> _, ids = ET.XMLID("<html><body id='body'>text</body></html>")
191 def check_encoding(encoding
):
193 >>> check_encoding("ascii")
194 >>> check_encoding("us-ascii")
195 >>> check_encoding("iso-8859-1")
196 >>> check_encoding("iso-8859-15")
197 >>> check_encoding("cp437")
198 >>> check_encoding("mac-roman")
201 "<?xml version='1.0' encoding='%s'?><xml />" % encoding
206 >>> bob = ET.TreeBuilder()
207 >>> e = bob.data("data")
208 >>> e = bob.start("tag", {})
209 >>> e = bob.end("tag")
216 from test
import test_xml_etree_c
217 support
.run_doctest(test_xml_etree_c
, verbosity
=True)
219 if __name__
== '__main__':