Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bc470d5

Browse files
committed
Merged revisions 75358 via svnmerge from
svn+ssh://[email protected]/python/trunk ........ r75358 | georg.brandl | 2009-10-11 17:06:44 +0200 (So, 11 Okt 2009) | 1 line Overhaul of Demo/xml. ........
1 parent 97b0837 commit bc470d5

3 files changed

Lines changed: 51 additions & 38 deletions

File tree

Demo/xml/elem_count.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1+
"""
2+
A simple demo that reads in an XML document and displays the number of
3+
elements and attributes as well as a tally of elements and attributes by name.
4+
"""
5+
16
import sys
7+
from collections import defaultdict
28

39
from xml.sax import make_parser, handler
410

@@ -7,16 +13,16 @@ class FancyCounter(handler.ContentHandler):
713
def __init__(self):
814
self._elems = 0
915
self._attrs = 0
10-
self._elem_types = {}
11-
self._attr_types = {}
16+
self._elem_types = defaultdict(int)
17+
self._attr_types = defaultdict(int)
1218

1319
def startElement(self, name, attrs):
14-
self._elems = self._elems + 1
15-
self._attrs = self._attrs + len(attrs)
16-
self._elem_types[name] = self._elem_types.get(name, 0) + 1
20+
self._elems += 1
21+
self._attrs += len(attrs)
22+
self._elem_types[name] += 1
1723

1824
for name in attrs.keys():
19-
self._attr_types[name] = self._attr_types.get(name, 0) + 1
25+
self._attr_types[name] += 1
2026

2127
def endDocument(self):
2228
print("There were", self._elems, "elements.")
@@ -30,7 +36,7 @@ def endDocument(self):
3036
for pair in self._attr_types.items():
3137
print("%20s %d" % pair)
3238

33-
34-
parser = make_parser()
35-
parser.setContentHandler(FancyCounter())
36-
parser.parse(sys.argv[1])
39+
if __name__ == '__main__':
40+
parser = make_parser()
41+
parser.setContentHandler(FancyCounter())
42+
parser.parse(sys.argv[1])

Demo/xml/roundtrip.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
but not necessarily identical, document.
44
"""
55

6-
import sys, string
6+
import sys
77

88
from xml.sax import saxutils, handler, make_parser
99

1010
# --- The ContentHandler
1111

1212
class ContentGenerator(handler.ContentHandler):
1313

14-
def __init__(self, out = sys.stdout):
14+
def __init__(self, out=sys.stdout):
1515
handler.ContentHandler.__init__(self)
1616
self._out = out
1717

@@ -40,6 +40,7 @@ def processingInstruction(self, target, data):
4040

4141
# --- The main program
4242

43-
parser = make_parser()
44-
parser.setContentHandler(ContentGenerator())
45-
parser.parse(sys.argv[1])
43+
if __name__ == '__main__':
44+
parser = make_parser()
45+
parser.setContentHandler(ContentGenerator())
46+
parser.parse(sys.argv[1])

Demo/xml/rss2html.py

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,50 @@
1+
"""
2+
A demo that reads in an RSS XML document and emits an HTML file containing
3+
a list of the individual items in the feed.
4+
"""
5+
16
import sys
7+
import codecs
28

39
from xml.sax import make_parser, handler
410

511
# --- Templates
612

7-
top = \
8-
"""
13+
top = """\
914
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
10-
<HTML>
11-
<HEAD>
12-
<TITLE>%s</TITLE>
13-
</HEAD>
14-
15-
<BODY>
16-
<H1>%s</H1>
15+
<html>
16+
<head>
17+
<title>%s</title>
18+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
19+
</head>
20+
21+
<body>
22+
<h1>%s</h1>
1723
"""
1824

19-
bottom = \
20-
"""
25+
bottom = """
2126
</ul>
2227
23-
<HR>
24-
<ADDRESS>
25-
Converted to HTML by sax_rss2html.py.
26-
</ADDRESS>
28+
<hr>
29+
<address>
30+
Converted to HTML by rss2html.py.
31+
</address>
2732
28-
</BODY>
29-
</HTML>
33+
</body>
34+
</html>
3035
"""
3136

3237
# --- The ContentHandler
3338

3439
class RSSHandler(handler.ContentHandler):
3540

36-
def __init__(self, out = sys.stdout):
41+
def __init__(self, out=sys.stdout):
3742
handler.ContentHandler.__init__(self)
3843
self._out = out
3944

4045
self._text = ""
4146
self._parent = None
42-
self._list_started = 0
47+
self._list_started = False
4348
self._title = None
4449
self._link = None
4550
self._descr = ""
@@ -69,7 +74,7 @@ def endElement(self, name):
6974
elif name == "item":
7075
if not self._list_started:
7176
self._out.write("<ul>\n")
72-
self._list_started = 1
77+
self._list_started = True
7378

7479
self._out.write(' <li><a href="%s">%s</a> %s\n' %
7580
(self._link, self._title, self._descr))
@@ -86,6 +91,7 @@ def characters(self, content):
8691

8792
# --- Main program
8893

89-
parser = make_parser()
90-
parser.setContentHandler(RSSHandler())
91-
parser.parse(sys.argv[1])
94+
if __name__ == '__main__':
95+
parser = make_parser()
96+
parser.setContentHandler(RSSHandler())
97+
parser.parse(sys.argv[1])

0 commit comments

Comments
 (0)