diff --git a/util/local_database/xpathlite.py b/util/local_database/xpathlite.py index ecf1dad44453e9b9c96a7331ba344798cc4bfe86..39402058c62932753419ca353dd70a8a9a769b57 100644 --- a/util/local_database/xpathlite.py +++ b/util/local_database/xpathlite.py @@ -36,8 +36,6 @@ import sys import os import xml.dom.minidom -doc_cache = {} - class DraftResolution: # See http://www.unicode.org/cldr/process.html for description unconfirmed = 'unconfirmed' @@ -56,6 +54,12 @@ class Error: def __str__(self): return self.msg +doc_cache = {} +def parseDoc(file): + if not doc_cache.has_key(file): + doc_cache[file] = xml.dom.minidom.parse(file) + return doc_cache[file] + def findChild(parent, tag_name, arg_name=None, arg_value=None, draft=None): for node in parent.childNodes: if node.nodeType != node.ELEMENT_NODE: @@ -80,12 +84,7 @@ def findChild(parent, tag_name, arg_name=None, arg_value=None, draft=None): return False def findTagsInFile(file, path): - doc = False - if doc_cache.has_key(file): - doc = doc_cache[file] - else: - doc = xml.dom.minidom.parse(file) - doc_cache[file] = doc + doc = parseDoc(file) elt = doc.documentElement tag_spec_list = path.split("/") @@ -122,12 +121,7 @@ def findTagsInFile(file, path): return ret def _findEntryInFile(file, path, draft=None, attribute=None): - doc = False - if doc_cache.has_key(file): - doc = doc_cache[file] - else: - doc = xml.dom.minidom.parse(file) - doc_cache[file] = doc + doc = parseDoc(file) elt = doc.documentElement tag_spec_list = path.split("/") @@ -177,12 +171,7 @@ def _findEntryInFile(file, path, draft=None, attribute=None): return (None, None) def findAlias(file): - doc = False - if doc_cache.has_key(file): - doc = doc_cache[file] - else: - doc = xml.dom.minidom.parse(file) - doc_cache[file] = doc + doc = parseDoc(file) alias_elt = findChild(doc.documentElement, "alias") if not alias_elt: