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



