Created
May 5, 2015 23:12
-
-
Save evertheylen/af45e251fbf58f055565 to your computer and use it in GitHub Desktop.
Converteer oude formaat Speelveld.xml naar nieuw formaat
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python3 | |
# HOE TE GEBRUIKEN: | |
# ./convert.py Speelveld.xml | |
# Om Bewegingen.xml om te zetten naar Acties.xml; all hail the console! | |
# mv Bewegingen.xml Acties.xml | |
# sed -i "s/SPELERNAAM/ID/g" Acties.xml | |
# sed -i "s/BEWEGINGEN/ACTIES/g" Acties.xml | |
import xml.etree.ElementTree as ET | |
import sys | |
class Entity: | |
def __init__(self, el): | |
self.x = el.attrib["x"] | |
self.y = el.attrib["y"] | |
if "beweegbaar" in el.attrib: | |
self.beweegbaar = el.attrib["beweegbaar"] | |
else: | |
self.beweegbaar = None | |
type_el = el.find("TYPE") | |
if type_el == None: | |
self.typ = el.tag | |
else: | |
self.typ = type_el.text | |
self.subs = [] | |
for subel in el: | |
if subel.tag != "TYPE": | |
self.subs.append(subel) | |
def new_format(self): | |
root = ET.Element(self.typ.upper()) | |
root.attrib = {'x': self.x, 'y': self.y} | |
if self.beweegbaar != None: | |
root.attrib['beweegbaar'] = self.beweegbaar | |
for subel in self.subs: | |
root.append(subel) | |
root.tail = "\n" | |
return root | |
class Board: | |
# <NAAM>Level 1</NAAM> | |
# <LENGTE>10</LENGTE> | |
# <BREEDTE>10</BREEDTE> | |
# ... | |
def __init__(self, tree): | |
root = tree.getroot() | |
self.naam = root.find("NAAM") | |
self.lengte = root.find("LENGTE") | |
self.breedte = root.find("BREEDTE") | |
self.stuff = [] | |
for el in root: | |
if el.tag not in ["NAAM", "LENGTE", "BREEDTE"]: | |
self.stuff.append(Entity(el)) | |
def newtree(self): | |
root = ET.Element('VELD') | |
root.append(self.naam) | |
root.append(self.lengte) | |
root.append(self.breedte) | |
for el in self.stuff: | |
root.append(el.new_format()) | |
tree = ET.ElementTree(root) | |
return tree | |
def main(): | |
tree = ET.parse('Speelveld.xml') | |
b = Board(tree) | |
b.newtree().write('Speelveld.xml') | |
if __name__=='__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment