site de Fabien Torre


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:
site de Fabien Torre, université de Lille