mirror of
https://github.com/python/cpython.git
synced 2025-11-20 10:57:44 +00:00
Write part of ElementTree section
This commit is contained in:
parent
d58baf8592
commit
16ed521dd7
1 changed files with 75 additions and 8 deletions
|
|
@ -5,8 +5,6 @@
|
||||||
% Fix XXX comments
|
% Fix XXX comments
|
||||||
% Distutils upload (PEP 243)
|
% Distutils upload (PEP 243)
|
||||||
% The easy_install stuff
|
% The easy_install stuff
|
||||||
% xml.etree section
|
|
||||||
% added sqlite3
|
|
||||||
|
|
||||||
\title{What's New in Python 2.5}
|
\title{What's New in Python 2.5}
|
||||||
\release{0.1}
|
\release{0.1}
|
||||||
|
|
@ -1087,19 +1085,88 @@ introduction that shows some basic usage of the module.
|
||||||
\subsection{The ElementTree package}
|
\subsection{The ElementTree package}
|
||||||
|
|
||||||
A subset of Fredrik Lundh's ElementTree library for processing XML has
|
A subset of Fredrik Lundh's ElementTree library for processing XML has
|
||||||
been added to the standard library as \module{xml.etree}. The
|
been added to the standard library as \module{xmlcore.etree}. The
|
||||||
vailable modules are
|
vailable modules are
|
||||||
\module{ElementTree}, \module{ElementPath}, and
|
\module{ElementTree}, \module{ElementPath}, and
|
||||||
\module{ElementInclude} from ElementTree 1.2.6.
|
\module{ElementInclude} from ElementTree 1.2.6.
|
||||||
The \module{cElementTree} accelerator module is also included.
|
The \module{cElementTree} accelerator module is also included.
|
||||||
|
|
||||||
In subsequent alpha releases of Python 2.5, I'll add a brief
|
The rest of this section will provide a brief overview of using
|
||||||
introduction that will provide a page-long overview of using
|
ElementTree. Full documentation for ElementTree is available at
|
||||||
ElementTree. Full documentation for
|
\url{http://effbot.org/zone/element-index.htm}.
|
||||||
ElementTree is available at \url{http://effbot.org/zone/element-index.htm}.
|
|
||||||
|
ElementTree represents an XML document as a tree of element nodes.
|
||||||
|
The text content of the document is stored as the \member{.text}
|
||||||
|
and \member{.tail} attributes of
|
||||||
|
(This is one of the major differences between ElementTree and
|
||||||
|
the Document Object Model; in the DOM there are many different
|
||||||
|
types of node, including \class{TextNode}.)
|
||||||
|
|
||||||
|
The most commonly used parsing function is \function{parse()}, that
|
||||||
|
takes either a string (assumed to contain a filename) or a file-like
|
||||||
|
object and returns an \class{ElementTree} instance:
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
from xmlcore.etree import ElementTree as ET
|
||||||
|
|
||||||
|
tree = ET.parse('ex-1.xml')
|
||||||
|
|
||||||
|
feed = urllib.urlopen(
|
||||||
|
'http://planet.python.org/rss10.xml')
|
||||||
|
tree = ET.parse(feed)
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Once you have an \class{ElementTree} instance, you
|
||||||
|
can call its \method{getroot()} method to get the root \class{Element} node.
|
||||||
|
|
||||||
|
There's also an \function{XML()} function that takes a string literal
|
||||||
|
and returns an \class{Element} node (not an \class{ElementTree}).
|
||||||
|
This function provides a tidy way to incorporate XML fragments,
|
||||||
|
approaching the convenience of an XML literal:
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
svg = et.XML("""<svg width="10px" version="1.0">
|
||||||
|
</svg>""")
|
||||||
|
svg.set('height', '320px')
|
||||||
|
svg.append(elem1)
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Each XML element supports some dictionary-like and some list-like
|
||||||
|
access methods. Dictionary-like methods are used to access attribute
|
||||||
|
values, and list-like methods are used to access child nodes.
|
||||||
|
|
||||||
|
% XXX finish this
|
||||||
|
|
||||||
|
To generate XML output, you should call the
|
||||||
|
\method{ElementTree.write()} method. Like \function{parse()},
|
||||||
|
it can take either a string or a file-like object:
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
# Encoding is US-ASCII
|
||||||
|
tree.write('output.xml')
|
||||||
|
|
||||||
|
# Encoding is UTF-8
|
||||||
|
f = open('output.xml', 'w')
|
||||||
|
tree.write(f, 'utf-8')
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
(Caution: the default encoding used for output is ASCII, which isn't
|
||||||
|
very useful for general XML work, raising an exception if there are
|
||||||
|
any characters with values greater than 127. You should always
|
||||||
|
specify a different encoding such as UTF-8 that can handle any Unicode
|
||||||
|
character.)
|
||||||
|
|
||||||
|
|
||||||
% XXX write introduction
|
% XXX write introduction
|
||||||
|
|
||||||
|
\begin{seealso}
|
||||||
|
|
||||||
|
\seeurl{http://effbot.org/zone/element-index.htm}
|
||||||
|
{Official documentation for ElementTree.}
|
||||||
|
|
||||||
|
|
||||||
|
\end{seealso}
|
||||||
|
|
||||||
|
|
||||||
\subsection{The hashlib package}
|
\subsection{The hashlib package}
|
||||||
|
|
||||||
|
|
@ -1373,6 +1440,6 @@ changes to your code:
|
||||||
|
|
||||||
The author would like to thank the following people for offering
|
The author would like to thank the following people for offering
|
||||||
suggestions, corrections and assistance with various drafts of this
|
suggestions, corrections and assistance with various drafts of this
|
||||||
article: Thomas Wouters.
|
article: Mike Rovner, Thomas Wouters.
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue