Annotation of zogiLib/xml_helpers.py, revision 1.3

1.1       dwinter     1: """ some helpfull methods """
                      2: import xml.dom.minidom
                      3: import os.path
                      4: import re
                      5: import urllib
                      6: 
                      7: def getISO(): # very bad made has to be configured
1.3     ! dwinter     8:         """ISO"""
        !             9:         try:
        !            10:                 f=file('/usr/local/mpiwg/Zope/lib/python/Products/OSA_system/iso639-1.inc','r').readlines()
        !            11:                 #f=file('OSA_system/iso639-1.inc','r').readlines()
        !            12:                 ret={}
        !            13:                 for lineraw in f:
        !            14:                         line=lineraw.encode('ascii','replace')
        !            15:                         value=string.split(line,'\t')[0].encode('ascii','replace')
        !            16:                         key=string.split(line,'\t')[1].encode('ascii','replace')
        !            17:                         ret[key]=value
        !            18:         except:
        !            19:                 ret={}
1.1       dwinter    20:         return ret
                     21: 
                     22: def readArchimedesXML(folder):
1.3     ! dwinter    23:         """gib URL aus """
1.1       dwinter    24:         try:
                     25:             XML=urllib.urlopen("http://archimedes.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.cgi?step=xmlcorpusmanifest").read()
                     26:             #print XML
                     27:             dom=xml.dom.minidom.parseString(XML)
                     28:             items=dom.getElementsByTagName('item')
                     29:             dict={}
                     30: 
                     31:             for item in items:
                     32:                     #print item.attributes['dir'].value
1.3     ! dwinter    33:                     try:                
1.1       dwinter    34:                             dict[item.attributes['dir'].value]=item.attributes['xml'].value
                     35:                             #print item.attributes['dir'].value,item.attributes['text'].value
                     36:                     except:
                     37:                             """nothing"""
                     38: 
                     39:             if dict.has_key(folder):
                     40:                 return dict[folder]
                     41:             else:
1.3     ! dwinter    42:                 return ""
        !            43:         except:
1.1       dwinter    44:             return ""
                     45: 
1.3     ! dwinter    46:         
1.2       dwinter    47: def getUniqueElementText(node):
1.1       dwinter    48: 
1.3     ! dwinter    49:         try:
        !            50:                 return getText(node[0].childNodes)
        !            51:         except:
        !            52:                 return ""
1.1       dwinter    53: def getText(nodelist):
                     54:     
                     55:     rc = ""
                     56:     for node in nodelist:
                     57:     
1.3     ! dwinter    58:         if node.nodeType == node.TEXT_NODE:
1.1       dwinter    59:            rc = rc + node.data
                     60:     return rc
                     61: 
                     62: def changeNodesInIndexMeta(path,node,subnodes,parent=None,nodeAttributes=None):
                     63:     """node mit subnodes wird in index.meta in path eingetragen bzw. ausgetauscht"""
                     64: 
                     65:     if os.path.exists(path+"/index.meta"):
                     66:         inFile=file(path+"/index.meta")
                     67:         f=inFile.read()
                     68:         inFile.close()
                     69:     else:
                     70:         f="""<resource type="ECHO" version="1.1"></resource>"""
                     71:     
                     72:     
                     73:     dom=xml.dom.minidom.parseString(f)
                     74:     root=dom.getElementsByTagName("resource")[0]
                     75:     
                     76:     if parent:
                     77: 
                     78:         try:
                     79:             root=root.getElementsByTagName(parent)[0]
                     80:         except:
                     81:             #print "parent",parent
                     82:             nodeNew=dom.createElement(parent)
                     83:             root.appendChild(nodeNew)
                     84:             root=root.getElementsByTagName(parent)[0]
                     85:     
                     86:     # check if node already exist
                     87: 
                     88: 
                     89:     if node=="":
                     90:         for subnode in subnodes.keys():
                     91: 
                     92:             nodeOld=root.getElementsByTagName(subnode)
                     93:             
                     94:             if nodeOld: # if yes -> delete it
                     95:                 try:
                     96:                     root.removeChild(nodeOld[0]).unlink()
                     97:                 except:
                     98:                     """nothing"""
                     99: 
                    100:             namenode=dom.createElement(re.sub(r' ','-',subnode))
                    101:             namenodetext=dom.createTextNode(subnodes[subnode].decode("utf8"))
                    102:             namenode.appendChild(namenodetext)
                    103:             root.appendChild(namenode)
                    104: 
                    105:     else:
                    106:         nodeOld=root.getElementsByTagName(node)
                    107:         
                    108:         if nodeOld: # if yes -> delete it
                    109:             root.removeChild(nodeOld[0]).unlink()
                    110: 
                    111:         nodeNew=dom.createElement(node) # create new
                    112: 
                    113:         if nodeAttributes:
                    114:             for attribute in nodeAttributes.keys():
                    115:                 #print attribute,nodeAttributes[attribute]
                    116:                 nodeNew.setAttribute(attribute,nodeAttributes[attribute])
                    117: 
                    118:         for subnode in subnodes.keys():
                    119: 
                    120:             namenode=dom.createElement(re.sub(r' ','-',subnode))
                    121:             namenodetext=dom.createTextNode(subnodes[subnode].decode("utf8"))
                    122:             namenode.appendChild(namenodetext)
                    123:             nodeNew.appendChild(namenode)
                    124: 
                    125: 
                    126:         root.appendChild(nodeNew)
                    127: 
                    128:     writefile=file(path+"/index.meta","w")
                    129:     writefile.write(dom.toxml().encode('utf-8'))
                    130:     writefile.close()
                    131:     os.chmod(path+"/index.meta",0664)
                    132: 
                    133: 
                    134:     
                    135:     
                    136:     

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>