1 # xml.etree test for cElementTree
6 from test
import test_support
8 ET
= test_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 callable(method
):
39 print method
, "not callable"
41 def serialize(ET
, elem
, encoding
=None):
43 file = StringIO
.StringIO()
44 tree
= ET
.ElementTree(elem
)
46 tree
.write(file, encoding
)
49 return file.getvalue()
54 def summarize_list(seq
):
55 return map(summarize
, seq
)
59 Test element tree interface.
61 >>> element = ET.Element("tag", key="value")
62 >>> tree = ET.ElementTree(element)
64 Make sure all standard element methods exist.
66 >>> check_method(element.append)
67 >>> check_method(element.insert)
68 >>> check_method(element.remove)
69 >>> check_method(element.getchildren)
70 >>> check_method(element.find)
71 >>> check_method(element.findall)
72 >>> check_method(element.findtext)
73 >>> check_method(element.clear)
74 >>> check_method(element.get)
75 >>> check_method(element.set)
76 >>> check_method(element.keys)
77 >>> check_method(element.items)
78 >>> check_method(element.getiterator)
80 Basic method sanity checks.
82 >>> serialize(ET, element) # 1
84 >>> subelement = ET.Element("subtag")
85 >>> element.append(subelement)
86 >>> serialize(ET, element) # 2
87 '<tag key="value"><subtag /></tag>'
88 >>> element.insert(0, subelement)
89 >>> serialize(ET, element) # 3
90 '<tag key="value"><subtag /><subtag /></tag>'
91 >>> element.remove(subelement)
92 >>> serialize(ET, element) # 4
93 '<tag key="value"><subtag /></tag>'
94 >>> element.remove(subelement)
95 >>> serialize(ET, element) # 5
97 >>> element.remove(subelement)
98 Traceback (most recent call last):
99 ValueError: list.remove(x): x not in list
100 >>> serialize(ET, element) # 6
101 '<tag key="value" />'
106 Test find methods (including xpath syntax).
108 >>> elem = ET.XML(SAMPLE_XML)
109 >>> elem.find("tag").tag
111 >>> ET.ElementTree(elem).find("tag").tag
113 >>> elem.find("section/tag").tag
115 >>> ET.ElementTree(elem).find("section/tag").tag
117 >>> elem.findtext("tag")
119 >>> elem.findtext("tog")
120 >>> elem.findtext("tog", "default")
122 >>> ET.ElementTree(elem).findtext("tag")
124 >>> elem.findtext("section/tag")
126 >>> ET.ElementTree(elem).findtext("section/tag")
128 >>> summarize_list(elem.findall("tag"))
130 >>> summarize_list(elem.findall("*"))
131 ['tag', 'tag', 'section']
132 >>> summarize_list(elem.findall(".//tag"))
133 ['tag', 'tag', 'tag']
134 >>> summarize_list(elem.findall("section/tag"))
136 >>> summarize_list(elem.findall("section//tag"))
138 >>> summarize_list(elem.findall("section/*"))
140 >>> summarize_list(elem.findall("section//*"))
142 >>> summarize_list(elem.findall("section/.//*"))
144 >>> summarize_list(elem.findall("*/*"))
146 >>> summarize_list(elem.findall("*//*"))
148 >>> summarize_list(elem.findall("*/tag"))
150 >>> summarize_list(elem.findall("*/./tag"))
152 >>> summarize_list(elem.findall("./tag"))
154 >>> summarize_list(elem.findall(".//tag"))
155 ['tag', 'tag', 'tag']
156 >>> summarize_list(elem.findall("././tag"))
158 >>> summarize_list(ET.ElementTree(elem).findall("/tag"))
160 >>> summarize_list(ET.ElementTree(elem).findall("./tag"))
162 >>> elem = ET.XML(SAMPLE_XML_NS)
163 >>> summarize_list(elem.findall("tag"))
165 >>> summarize_list(elem.findall("{http://effbot.org/ns}tag"))
166 ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
167 >>> summarize_list(elem.findall(".//{http://effbot.org/ns}tag"))
168 ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
174 >>> element = ET.XML("<html><body>text</body></html>")
175 >>> ET.ElementTree(element).write(sys.stdout)
176 <html><body>text</body></html>
177 >>> element = ET.fromstring("<html><body>text</body></html>")
178 >>> ET.ElementTree(element).write(sys.stdout)
179 <html><body>text</body></html>
180 >>> print ET.tostring(element)
181 <html><body>text</body></html>
182 >>> print ET.tostring(element, "ascii")
183 <?xml version='1.0' encoding='ascii'?>
184 <html><body>text</body></html>
185 >>> _, ids = ET.XMLID("<html><body>text</body></html>")
188 >>> _, ids = ET.XMLID("<html><body id='body'>text</body></html>")
195 def check_encoding(encoding
):
197 >>> check_encoding("ascii")
198 >>> check_encoding("us-ascii")
199 >>> check_encoding("iso-8859-1")
200 >>> check_encoding("iso-8859-15")
201 >>> check_encoding("cp437")
202 >>> check_encoding("mac-roman")
205 "<?xml version='1.0' encoding='%s'?><xml />" % encoding
210 >>> bob = ET.TreeBuilder()
211 >>> e = bob.data("data")
212 >>> e = bob.start("tag", {})
213 >>> e = bob.end("tag")
220 from test
import test_xml_etree_c
221 test_support
.run_doctest(test_xml_etree_c
, verbosity
=True)
223 if __name__
== '__main__':