19.7.1. Tutorial
This is a short tutorial for using 
xml.etree.ElementTree
(
ET
in short). The goal is to
demonstrate some of the building blocks and basic concepts of the module.
19.7.1.1. XML tree and elements
XML is an inherently hierarchical data format, and the most natural way to represent it is
with a tree. 
ET
has two classes for this purpose - 
ElementTree
represents the whole XML
document as a tree, and 
Element
represents a single node in this tree. Interactions with
the whole document (reading and writing to/from files) are usually done on the
ElementTree
level. Interactions with a single XML element and its sub-elements are done
on the 
Element
level.
19.7.1.2. Parsing XML
We’ll be using the following XML document as the sample data for this section:
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
We have a number of ways to import the data. Reading the file from disk:
import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')
root = tree.getroot()
Pdf password encryption - C# PDF Digital Signature Library: add, remove, update PDF digital signatures in C#.net, ASP.NET, MVC, WPF
Help to Improve the Security of Your PDF File by Adding Digital Signatures
pdf file security; change pdf document security
Pdf password encryption - VB.NET PDF Digital Signature Library: add, remove, update PDF digital signatures in vb.net, ASP.NET, MVC, WPF
Guide VB.NET Programmers to Improve the Security of Your PDF File by Adding Digital Signatures
copy locked pdf; decrypt pdf password online
Reading the data from a string:
root = ET.fromstring(country_data_as_string)
fromstring()
parses XML from a string directly into an 
Element
, which is the root
element of the parsed tree. Other parsing functions may create an 
ElementTree
. Check
the documentation to be sure.
As an 
Element
root
has a tag and a dictionary of attributes:
>>> root.tag
'data'
>>> root.attrib
{}
It also has children nodes over which we can iterate:
>>> for child in root:
...  print child.tag, child.attrib
...
country {'name': 'Liechtenstein'}
country {'name': 'Singapore'}
country {'name': 'Panama'}
Children are nested, and we can access specific child nodes by index:
>>> root[0][1].text
'2008'
19.7.1.3. Finding interesting elements
Element
has some useful methods that help iterate recursively over all the sub-tree below
it (its children, their children, and so on). For example, 
Element.iter()
:
>>> for neighbor in root.iter('neighbor'):
...  print neighbor.attrib
...
{'name': 'Austria', 'direction': 'E'}
{'name': 'Switzerland', 'direction': 'W'}
{'name': 'Malaysia', 'direction': 'N'}
{'name': 'Costa Rica', 'direction': 'W'}
{'name': 'Colombia', 'direction': 'E'}
Element.findall()
finds only elements with a tag which are direct children of the current
element. 
Element.find()
finds the first child with a particular tag, and 
Element.text
accesses the element’s text content. 
Element.get()
accesses the element’s attributes:
C# PDF Password Library: add, remove, edit PDF file password in C#
outputFilePath = Program.RootPath + "\\" 3_pw_a.pdf"; // Create a setting object with user password which is Hello World"); // Set encryption level to AES
create pdf security; decrypt a pdf
Online Remove password from protected PDF file
Find your password-protected PDF and upload it. If there is no strong encryption on your file, it will be unlocked and ready to download within seconds.
pdf security password; convert secure webpage to pdf
>>> for country in root.findall('country'):
...  rank = country.find('rank').text
...  name = country.get('name')
...  print name, rank
...
Liechtenstein 1
Singapore 4
Panama 68
More sophisticated specification of which elements to look for is possible by using XPath.
19.7.1.4. Modifying an XML File
ElementTree
provides a simple way to build XML documents and write them to files. The
ElementTree.write()
method serves this purpose.
Once created, an 
Element
object may be manipulated by directly changing its fields (such
as 
Element.text
), adding and modifying attributes (
Element.set()
method), as well as
adding new children (for example with 
Element.append()
).
Let’s say we want to add one to each country’s rank, and add an 
updated
attribute to the
rank element:
>>> for rank in root.iter('rank'):
...  new_rank = int(rank.text) + 1
...  rank.text = str(new_rank)
...  rank.set('updated''yes')
...
>>> tree.write('output.xml')
Our XML now looks like this:
VB.NET PDF Password Library: add, remove, edit PDF file password
String = Program.RootPath + "\\" 3_pw_a.pdf" ' Create a setting object with user password which is PasswordSetting("Hello World") ' Set encryption level to
decrypt pdf online; add security to pdf file
C# PDF File Permission Library: add, remove, update PDF file
outputFilePath = Program.RootPath + "\\" 3_pw_a.pdf"; // Create a setting object with user password "Hello World". Hello World"); // Set encryption level to
decrypt pdf without password; pdf password encryption
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
We can remove elements using 
Element.remove()
. Let’s say we want to remove all
countries with a rank higher than 50:
>>> for country in root.findall('country'):
...  rank = int(country.find('rank').text)
...  if rank > 50:
...  root.remove(country)
...
>>> tree.write('output.xml')
Our XML now looks like this:
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
</data>
VB.NET PDF File Permission Library: add, remove, update PDF file
As String = Program.RootPath + "\\" 3_pw_a.pdf" ' Create a password setting object with user password "Hello World Hello World") ' Set encryption level to
add security to pdf; advanced pdf encryption remover
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
NET class. Also able to uncompress PDF file in VB.NET programs. Support PDF encryption in VB.NET class applications. A professional
secure pdf file; secure pdf remove
19.7.1.5. Building XML documents
The 
SubElement()
function also provides a convenient way to create new sub-elements
for a given element:
>>> = ET.Element('a')
>>> = ET.SubElement(a, 'b')
>>> = ET.SubElement(a, 'c')
>>> = ET.SubElement(c, 'd')
>>> ET.dump(a)
<a><b /><c><d /></c></a>
19.7.1.6. Additional resources
See http://effbot.org/zone/element-index.htm for tutorials and links to other docs.
19.7.2. XPath support
This module provides limited support for XPath expressions for locating elements in a
tree. The goal is to support a small subset of the abbreviated syntax; a full XPath engine
is outside the scope of the module.
19.7.2.1. Example
Here’s an example that demonstrates some of the XPath capabilities of the module. We’ll
be using the 
countrydata
XML document from the Parsing XML section:
import xml.etree.ElementTree as ET
root = ET.fromstring(countrydata)
# Top-level elements
root.findall(".")
# All 'neighbor' grand-children of 'country' children of the top-level
# elements
root.findall("./country/neighbor")
# Nodes with name='Singapore' that have a 'year' child
root.findall(".//year/..[@name='Singapore']")
# 'year' nodes that are children of nodes with name='Singapore'
root.findall(".//*[@name='Singapore']/year")
# All 'neighbor' nodes that are the second child of their parent
root.findall(".//neighbor[2]")
19.7.2.2. Supported XPath syntax
Syntax
Meaning
Selects all child elements with the given tag. For example,
VB.NET Word: How to Convert Word Document to PNG Image Format in
and document formats, including converting Word to PDF in VB protection by utilizing the modern Advanced Encryption Standard that converts a password to a
create secure pdf; pdf security settings
C# Image: How to Annotate Image with Freehand Line in .NET Project
Tutorials on how to add freehand line objects to PDF, Word and TIFF SDK; Protect sensitive image information with redaction and encryption annotation objects;
change pdf security settings reader; convert locked pdf to word doc
tag
spam
selects all child elements named 
spam
spam/egg
selects
all grandchildren named 
egg
in all children named 
spam
.
*
Selects all child elements. For example, 
*/egg
selects all
grandchildren named 
egg
.
.
Selects the current node. This is mostly useful at the
beginning of the path, to indicate that it’s a relative path.
//
Selects all subelements, on all levels beneath the current
element. For example, 
.//egg
selects all 
egg
elements in the
entire tree.
..
Selects the parent element.
[@attrib]
Selects all elements that have the given attribute.
[@attrib='value']
Selects all elements for which the given attribute has the
given value. The value cannot contain quotes.
[tag]
Selects all elements that have a child named 
tag
. Only
immediate children are supported.
[position]
Selects all elements that are located at the given position.
The position can be either an integer (1 is the first position),
the expression 
last()
(for the last position), or a position
relative to the last position (e.g. 
last()-1
).
Predicates (expressions within square brackets) must be preceded by a tag name, an
asterisk, or another predicate. 
position
predicates must be preceded by a tag name.
19.7.3. Reference
19.7.3.1. Functions
xml.etree.ElementTree.
Comment
(
text=None
)
Comment element factory. This factory function creates a special element that will be
serialized as an XML comment by the standard serializer. The comment string can be
either a bytestring or a Unicode string. text is a string containing the comment string.
Returns an element instance representing a comment.
xml.etree.ElementTree.
dump
(
elem
)
Writes an element tree or element structure to sys.stdout. This function should be
used for debugging only.
The exact output format is implementation dependent. In this version, it’s written as
an ordinary XML file.
elem is an element tree or an individual element.
C# Image: C#.NET Code to Add HotSpot Annotation on Images
Protect sensitive information with powerful redaction and encryption annotation objects to provide powerful & profession imaging controls, PDF document, image
pdf password unlock; pdf security
C# Image: Add Watermark to Images Within RasterEdge .NET Imaging
powerful and reliable color reduction products, image encryption decryption, and even to provide powerful & profession imaging controls, PDF document, image to
change pdf security settings; can print pdf security
xml.etree.ElementTree.
fromstring
(
text
)
Parses an XML section from a string constant. Same as 
XML()
. text is a string
containing XML data. Returns an 
Element
instance.
xml.etree.ElementTree.
fromstringlist
(
sequence, parser=None
)
Parses an XML document from a sequence of string fragments. sequence is a list or
other sequence containing XML data fragments. parser is an optional parser instance.
If not given, the standard 
XMLParser
parser is used. Returns an 
Element
instance.
New in version 2.7.
xml.etree.ElementTree.
iselement
(
element
)
Checks if an object appears to be a valid element object. element is an element
instance. Returns a true value if this is an element object.
xml.etree.ElementTree.
iterparse
(
source, events=None, parser=None
)
Parses an XML section into an element tree incrementally, and reports what’s going
on to the user. source is a filename or file object containing XML data. events is a list
of events to report back. If omitted, only “end” events are reported. parser is an
optional parser instance. If not given, the standard 
XMLParser
parser is used. parser is
not supported by 
cElementTree
. Returns an iterator providing 
(event, elem)
pairs.
Note:  
iterparse()
only guarantees that it has seen the “>” character of a starting
tag when it emits a “start” event, so the attributes are defined, but the contents of
the text and tail attributes are undefined at that point. The same applies to the
element children; they may or may not be present.
If you need a fully populated element, look for “end” events instead.
xml.etree.ElementTree.
parse
(
source, parser=None
)
Parses an XML section into an element tree. source is a filename or file object
containing XML data. parser is an optional parser instance. If not given, the standard
XMLParser
parser is used. Returns an 
ElementTree
instance.
xml.etree.ElementTree.
ProcessingInstruction
(
target, text=None
)
PI element factory. This factory function creates a special element that will be
serialized as an XML processing instruction. target is a string containing the PI target.
text is a string containing the PI contents, if given. Returns an element instance,
representing a processing instruction.
xml.etree.ElementTree.
register_namespace
(
prefix, uri
)
Registers a namespace prefix. The registry is global, and any existing mapping for
either the given prefix or the namespace URI will be removed. prefix is a namespace
prefix. uri is a namespace uri. Tags and attributes in this namespace will be serialized
with the given prefix, if at all possible.
New in version 2.7.
xml.etree.ElementTree.
SubElement
(
parent, tag, attrib={}, **extra
)
Subelement factory. This function creates an element instance, and appends it to an
existing element.
The element name, attribute names, and attribute values can be either bytestrings or
Unicode strings. parent is the parent element. tag is the subelement name. attrib is an
optional dictionary, containing element attributes. extra contains additional attributes,
given as keyword arguments. Returns an element instance.
xml.etree.ElementTree.
tostring
(
element, encoding="us-ascii", method="xml"
)
Generates a string representation of an XML element, including all subelements.
element is an 
Element
instance. encoding [1] is the output encoding (default is US-
ASCII). method is either 
"xml"
"html"
or 
"text"
(default is 
"xml"
). Returns an
encoded string containing the XML data.
xml.etree.ElementTree.
tostringlist
(
element, encoding="us-ascii", method="xml"
)
Generates a string representation of an XML element, including all subelements.
element is an 
Element
instance. encoding [1] is the output encoding (default is US-
ASCII). method is either 
"xml"
"html"
or 
"text"
(default is 
"xml"
). Returns a list of
encoded strings containing the XML data. It does not guarantee any specific
sequence, except that 
"".join(tostringlist(element)) == tostring(element)
.
New in version 2.7.
xml.etree.ElementTree.
XML
(
text, parser=None
)
Parses an XML section from a string constant. This function can be used to embed
“XML literals” in Python code. text is a string containing XML data. parser is an
optional parser instance. If not given, the standard 
XMLParser
parser is used. Returns
an 
Element
instance.
xml.etree.ElementTree.
XMLID
(
text, parser=None
)
Parses an XML section from a string constant, and also returns a dictionary which
maps from element id:s to elements. text is a string containing XML data. parser is an
optional parser instance. If not given, the standard 
XMLParser
parser is used. Returns
a tuple containing an 
Element
instance and a dictionary.
19.7.3.2. Element Objects
class 
xml.etree.ElementTree.
Element
(
tag, attrib={}, **extra
)
Element class. This class defines the Element interface, and provides a reference
implementation of this interface.
The element name, attribute names, and attribute values can be either bytestrings or
Unicode strings. tag is the element name. attrib is an optional dictionary, containing
element attributes. extra contains additional attributes, given as keyword arguments.
tag
A string identifying what kind of data this element represents (the element type, in
other words).
text
The text attribute can be used to hold additional data associated with the element.
As the name implies this attribute is usually a string but may be any application-
specific object. If the element is created from an XML file the attribute will contain
any text found between the element tags.
tail
The tail attribute can be used to hold additional data associated with the element.
This attribute is usually a string but may be any application-specific object. If the
element is created from an XML file the attribute will contain any text found after
the element’s end tag and before the next tag.
attrib
A dictionary containing the element’s attributes. Note that while the attrib value is
always a real mutable Python dictionary, an ElementTree implementation may
choose to use another internal representation, and create the dictionary only if
someone asks for it. To take advantage of such implementations, use the
dictionary methods below whenever possible.
The following dictionary-like methods work on the element attributes.
clear
()
Resets an element. This function removes all subelements, clears all attributes,
and sets the text and tail attributes to None.
get
(
key, default=None
)
Gets the element attribute named key.
Returns the attribute value, or default if the attribute was not found.
items
()
Returns the element attributes as a sequence of (name, value) pairs. The
attributes are returned in an arbitrary order.
keys
()
Returns the elements attribute names as a list. The names are returned in an
arbitrary order.
set
(
key, value
)
Set the attribute key on the element to value.
The following methods work on the element’s children (subelements).
append
(
subelement
)
Adds  the  element subelement to the end of this elements internal list of
subelements.
extend
(
subelements
)
Appends subelements from a sequence object with zero or more elements. Raises
AssertionError
if a subelement is not a valid object.
New in version 2.7.
find
(
match
)
Finds the first subelement matching match. match may be a tag name or path.
Returns an element instance or 
None
.
findall
(
match
)
Finds all matching subelements, by tag name or path. Returns a list containing all
matching elements in document order.
findtext
(
match, default=None
)
Finds text for the first subelement matching match. match may be a tag name or
path. Returns the text content of the first matching element, or default if no
element was found. Note that if the matching element has no text content an
empty string is returned.
getchildren
()
Deprecated since version 2.7: Use 
list(elem)
or iteration.
getiterator
(
tag=None
)
Documents you may be interested
Documents you may be interested