From f4edaa3c380ad53ce1b27db1ffd6e35ed91a9ae6 Mon Sep 17 00:00:00 2001 From: Nemunaire Date: Fri, 6 Jun 2014 16:16:50 +0200 Subject: [PATCH] XML node: can create an temporary index for instant use --- xmlparser/node.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/xmlparser/node.py b/xmlparser/node.py index 5776327..c0fc3a3 100644 --- a/xmlparser/node.py +++ b/xmlparser/node.py @@ -95,14 +95,18 @@ class ModuleState: return (isinstance(source, bool) and source) or source == "True" - def setIndex(self, fieldname = "name", tagname = None): - """Defines an hash table to accelerate childs search. You have just to define a common attribute""" - self.index = dict() - self.index_fieldname = fieldname - self.index_tagname = tagname + def tmpIndex(self, fieldname="name", tagname=None): + index = dict() for child in self.childs: if (tagname is None or tagname == child.name) and child.hasAttribute(fieldname): - self.index[child[fieldname]] = child + index[child[fieldname]] = child + return index + + def setIndex(self, fieldname="name", tagname=None): + """Defines an hash table to accelerate childs search. You have just to define a common attribute""" + self.index = self.tmpIndex(fieldname, tagname) + self.index_fieldname = fieldname + self.index_tagname = tagname def __contains__(self, i): """Return true if i is found in the index"""