
import sys, string
from xml.dom import minidom, Node
import Grid
class Parser:
	def __init__(self):
		pass
	
	def walk(self,parent,level):
		for node in parent.childNodes:
			if node.nodeType==Node.ELEMENT_NODE:
				#print "\nElement: %s" %node.nodeName
				attrs=node.attributes
				tableAttr=('chain','policy')
				ruleAttr=('num', 'protocol', 'option', 'source', 'destination','target')
				if node.nodeName=='table':
					attrNode=attrs.get('chain')
					chainValue=attrNode.nodeValue
					attrNode=attrs.get('policy')
					policyValue=attrNode.nodeValue
					#print "\nChain: %s --- Policy: %s" %(chainValue,policyValue)
					
				if node.nodeName=='rule':
					attrNode=attrs.get('num')
					numValue=attrNode.nodeValue
					attrNode=attrs.get('protocol')
					protocolValue=attrNode.nodeValue
					attrNode=attrs.get('option')
					optionValue=attrNode.nodeValue
					attrNode=attrs.get('source')
					sourceValue=attrNode.nodeValue
					attrNode=attrs.get('destination')
					destinationValue=attrNode.nodeValue
					attrNode=attrs.get('target')
					targetValue=attrNode.nodeValue
					
					self.createRow(chainValue,policyValue,numValue,protocolValue,optionValue,sourceValue,destinationValue,targetValue)
					
				self.walk(node, level+1)
	
	def run (self):
		doc=minidom.parse("iptResponse.xml")
		rootNode=doc.documentElement
		level=0
		self.walk(rootNode,level)
	
	def creteRow (chainValue,policyValue,numValue,protocolValue,optionValue,sourceValue,destinationValue,targetValue):
		Grid.grid_1.AppendRows(1)
		row = Grid.grid_1.GetNumberRows()-1
		Grid.grid_1.SetRowLabelValue(row,"")
		Grid.grid_1.SetCellValue(row,0,chainValue)
		Grid.grid_1.SetCellValue(row,1,policyValue)
		Grid.grid_1.SetCellValue(row,2,numValue)
		Grid.grid_1.SetCellValue(row,3,protocolValue)
		Grid.grid_1.SetCellValue(row,4,optionValue)
		Grid.grid_1.SetCellValue(row,5,sourceValue)
		Grid.grid_1.SetCellValue(row,6,destinationValue)
		Grid.grid_1.SetCellValue(row,7,targetValue)
		
if __name__=="__main__":
	parser=Parser()
	parser.run()
	


