1.
csp-10-2-1: What is the last thing (last line of text) that will be printed when the code below runs?
import xml.etree.ElementTree as ET
data = '''
<person>
<name>Chuck</name>
<phone type="intl">
+1 734 303 4456
</phone>
<email hide="yes"/>
</person>'''
tree = ET.fromstring(data)
print('Name:', tree.find('name').text)
print('Attr:', tree.find('email').get('hide'))
'''
), as well as the triple double quote ("""
), allow for the creation of strings in Python that span multiple lines.fromstring
converts the string representation of the XML into a “tree” of XML elements. When the XML is in a tree, we have a series of methods we can call to extract portions of data from the XML string. The find
function searches through the XML tree and retrieves the element that matches the specified tag. The get
gets the value of the attribute in that tag.ElementTree
has the advantage that while the XML in this example is quite simple, it turns out there are many rules regarding valid XML, and using ElementTree
allows us to extract data from XML without worrying about the rules of XML syntax.get
to get the value of an attributeimport xml.etree.ElementTree as ET
data = '''
<person>
<name>Chuck</name>
<phone type="intl">
+1 734 303 4456
</phone>
<email>csev@umich.edu</email>
</person>'''
tree = ET.fromstring(data)
print('Name:', tree.find('name').text)
print('Attr:', tree.find('email').get('hide'))
find
to get the first element of the XML of a specified type. You can the use find
on that element to get children tags of that element.import xml.etree.ElementTree as ET
data = '''
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year calendar="Gregorian">2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
'''
tree = ET.fromstring(data)
book = tree.find('book')
print('Author:', book.find('author').text)
print('Lang:',book.find('title').get('lang'))
tree
rather than in book
? Modify the code to see what happens.import xml.etree.ElementTree as ET
data = '''
<bookstore>
<book category="mystery">
<title lang="en">The Personal Librarian
<author>Giada Marie Benedict<author>
<year calendar=Gregorian>2021</year>
<price>19.85</price>
<book\>
</bookstore>
'''
tree = ET.fromstring(data)
book = tree.find('book')
print('Author:', book.find('author').text)
print('Title:', book.find('title').text)
print('Lang:',book.find('title').get('lang'))
import xml.etree.ElementTree as ET
data = '''
<messages>
<note id="p501">
<time region="EST">11:00am</time>
Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
</body>Don't forget me this weekend!</body>
</note>
<note id="p502">
<time region=EST>1:00pm</time>
<to>Jani</to>
<from>Tove
<heading>Re: Reminder</heading>
<body>I will not!<body>
</note>
</messages>
'''
tree = ET.fromstring(data)
note = tree.find('note')
print('to:', note.find('to').text)
print('body:', note.find('body').text)
print('time region:',note.find('time').get('region'))
import xml.etree.ElementTree as ET
data = '''
<bookstore>
<book category="Cultural Heritage Fiction">
<title lang="en">The Turner House</title>
<author>Angela Flournoy</author>
<year>2016</year>
</book>
</bookstore>
'''
import xml.etree.ElementTree as ET
data = '''
<messages>
<note id="p501">
<time region="EST">11:00am</time>
<to>Zihan</to>
<from>Xinyin</from>
<heading>Reminder</heading>
</body>Don't forget the talk!</body>
</note>
'''