RPI/Mathactivity/XML/Sample Parser

From OLPC
< RPI‎ | Mathactivity‎ | XML
Revision as of 20:18, 8 April 2008 by Pizzutosan (talk | contribs) (New page: import xml.dom.minidom #XML handling by DOM import sys, os #To check if the settings file is already there import string class SettingsParser: def __init__(self, filepath): if os....)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

import xml.dom.minidom #XML handling by DOM import sys, os #To check if the settings file is already there import string

class SettingsParser:

def __init__(self, filepath): if os.path.exists(filepath): #Parse and dig out the levels dom = xml.dom.minidom.parse(filepath) di = self.__getLevels(dom) #Figure out what level problems we should give self.level = self.__processLevel(di) else: pass #First time it's been run, need to launch tutorial somehow, also get and set colors

	def __getLevels(self, dom):

"""Parses the tree for <level> tags, returning both the number of the level and the percent success this

		user has had."""

levels = [] percents = []

		tries = []
		#Loop over the nodes we want (2nd tier from root)
		for node in dom.childNodes[0].childNodes:
			#If it's not a text node and it's the right type, let's get to work
			if node.nodeType == node.ELEMENT_NODE and node.localName == "level":
				#Grab the level number and convert to int for returning
				levels.append(int(node.getAttribute("num")))
				stri = node.firstChild.data.lstrip().split()
				for word in stri:
					if word.find('%') != -1:
						word = float(word[0:-1])
						percents.append(word)
					else:
						word = int(word)
						tries.append(word)
		dic = self.__setupDictionary(levels, percents, tries)
		return dic
		
	def __processLevel(self, dic):
		"""Works out at which level problem the game should start."""
		level = 0
		for elem in dic.keys():
			#If we're over the percentage and have tried enough times, skip the level
			if dic[elem][0] > 75 and dic[elem][1] > 10:
				level+=1
		return level
		
		
	def __setupDictionary(self, levels, percents, tries):

dic = {}

		for i in range(len(levels)):
			dic[i] = [percents[i], tries[i]]
		return dic

XML Format this is to parse:

<settings>
 <level>
  #% //Percent successful at this level
  # //Number of tries at this level
 </level>
</settings>