1: """ some helpfull methods """
2: import xml.dom.minidom
3: import os.path
4: import re
5:
6: def getText(nodelist):
7:
8: rc = ""
9: for node in nodelist:
10:
11: if node.nodeType == node.TEXT_NODE:
12: rc = rc + node.data
13: return rc
14:
15: def changeNodesInIndexMeta(path,node,subnodes,parent=None,nodeAttributes=None):
16: """node mit subnodes wird in index.meta in path eingetragen bzw. ausgetauscht"""
17:
18: if os.path.exists(path+"/index.meta"):
19: inFile=file(path+"/index.meta")
20: f=inFile.read()
21: inFile.close()
22: else:
23: f="""<resource type="ECHO" version="1.0"></resource>"""
24:
25:
26: dom=xml.dom.minidom.parseString(f)
27: root=dom.getElementsByTagName("resource")[0]
28:
29: if parent:
30:
31: try:
32: root=root.getElementsByTagName(parent)[0]
33: except:
34: #print "parent",parent
35: nodeNew=dom.createElement(parent)
36: root.appendChild(nodeNew)
37: root=root.getElementsByTagName(parent)[0]
38:
39: # check if node already exist
40:
41: nodeOld=root.getElementsByTagName(node)
42:
43: if nodeOld: # if yes -> delete it
44: root.removeChild(nodeOld[0]).unlink()
45:
46: if node=="":
47: for subnode in subnodes.keys():
48:
49: namenode=dom.createElement(re.sub(r' ','-',subnode))
50: namenodetext=dom.createTextNode(subnodes[subnode].decode("utf8"))
51: namenode.appendChild(namenodetext)
52: root.appendChild(namenode)
53:
54: else:
55: nodeNew=dom.createElement(node) # create new
56:
57: if nodeAttributes:
58: for attribute in nodeAttributes.keys():
59: #print attribute,nodeAttributes[attribute]
60: nodeNew.setAttribute(attribute,nodeAttributes[attribute])
61:
62: for subnode in subnodes.keys():
63:
64: namenode=dom.createElement(re.sub(r' ','-',subnode))
65: namenodetext=dom.createTextNode(subnodes[subnode].decode("utf8"))
66: namenode.appendChild(namenodetext)
67: nodeNew.appendChild(namenode)
68:
69:
70: root.appendChild(nodeNew)
71:
72: writefile=file(path+"/index.meta","w")
73: writefile.write(dom.toxml().encode('utf-8'))
74: writefile.close()
75:
76:
77:
78:
79:
80:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>