Source de svg-v2.py
1:
2: from xml.dom.minidom import parse
3: import sys
4:
5: #xmlfilename = sys.argv[1]
6: xmlfilename = 'argentina.svg'
7:
8: dom = parse(xmlfilename)
9:
10:
11:
12: def getChildNodesByType(n,type):
13: ce = []
14: for f in n.childNodes:
15: if f.nodeType==type:
16: ce.append(f)
17: return ce
18:
19:
20:
21: def getChildNodesByTypeAndName(n,type,name):
22: ce = []
23: for f in n.childNodes:
24: if (f.nodeType==type) and (f.nodeName==name):
25: ce.append(f)
26: return ce
27:
28:
29:
30: def childElements(n):
31: return getChildNodesByType(n,1)
32:
33:
34:
35: def childTexts(n):
36: return getChildNodesByType(n,3)
37:
38:
39:
40: def getChildElementsByTagName(n,tag):
41: return getChildNodesByTypeAndName(n,1,tag)
42:
43:
44:
45: def resolveElementsPathLoop(ns,path):
46: if len(path)==0:
47: return ns
48: else:
49: nexttag = path.pop(0)
50: nextns = []
51: for n in ns:
52: nextns.extend(getChildElementsByTagName(n,nexttag))
53: return resolveElementsPathLoop(nextns,path)
54:
55:
56:
57: def resolveElementsPath(dom,path):
58: starttag = path.pop(0)
59: return resolveElementsPathLoop(dom.getElementsByTagName(starttag),path)
60:
61:
62:
63: def getTextContent(n):
64: children = childTexts(n)
65: if len(children)>0:
66: return children[0].nodeValue
67: else:
68: return None
69:
70:
71:
72: def getAttributeValue(n,a):
73: if a in n.attributes:
74: return n.attributes[a].nodeValue
75: else:
76: return None
77:
78:
79:
80:
81:
82:
83:
84: print("-- le nom de l'auteur --")
85:
86: titles = resolveElementsPath(dom,['dc:creator','cc:Agent','dc:title'])
87: print("L'auteur est",getTextContent(titles[0]),"!")
88:
89:
90:
91: print("-- le titre du dessin --")
92:
93: titles = resolveElementsPath(dom,['cc:Work','dc:title'])
94:
95: print(getTextContent(titles[0]))
96:
97:
98:
99: print("-- les mots clefs --")
100:
101: items = resolveElementsPath(dom,['rdf:Bag','rdf:li'])
102:
103: for i in items:
104: print(getTextContent(i))
105:
106:
107:
108: print("-- les rectangles --")
109:
110: rectangles = dom.getElementsByTagName("rect")
111:
112: print("il y en a",rectangles.length,':')
113:
114: for r in rectangles:
115: height = getAttributeValue(r,'height')
116: width = getAttributeValue(r,'width')
117: print(' . ',height,' x ',width)
118:
119:
120: