Hi, Maybe you should give a try to xmltodict package
George leam hall <leamh...@gmail.com> ezt írta (időpont: 2018. ápr. 16., H 15:14): > Yeah, understood. > > Okay, knowing that others are smarter about python, and ElementTree, > here's some code I was using to parse XML. Took a while to recover > from. :) > > Leam > > ##### > > import xml.etree.ElementTree as ET > import os > import argparse > import fnmatch > > def show_info(file, element): > action = "" > net_proto = "" > trans_proto = "" > r_port = "" > l_port = "" > direction = "" > name = "" > has_info = False > f_name = "" > > id = element.attrib['name'] > f_name = os.path.splitext(file)[0] > > for setting in element.iter('Setting'): > if setting.attrib['name'] == 'Action': > action = setting.attrib['value'] > has_info = True > elif setting.attrib['name'] == '+NetworkProtocol#0': > net_proto = setting.attrib['value'] > has_info = True > elif setting.attrib['name'] == '+TransportProtocol#0': > trans_proto = setting.attrib['value'] > has_info = True > elif setting.attrib['name'] == '+RemotePort#0': > r_port = setting.attrib['value'] > has_info = True > elif setting.attrib['name'] == '+LocalPort#0': > l_port = setting.attrib['value'] > has_info = True > elif setting.attrib['name'] == 'Direction': > direction = setting.attrib['value'] > has_info = True > elif setting.attrib['name'] == 'Name': > name = setting.attrib['value'] > has_info = True > > if has_info: > outfile.write("%s ; %s ; %s ; %s ; %s ; %s ; %s ; %s ; %s\n" % > (f_name, id, name, action, net_proto, trans_proto, l_port, r_port, > direction)) > > > > ## Main > parser = argparse.ArgumentParser() > parser.add_argument("-o", "--outfile", default = "new_out.csv", > help="File to write to.") > parser.add_argument("-d", "--dir", default = ".", help="Directory of > the XML files.") > args = parser.parse_args() > > indir = args.dir > outfile = open(args.outfile, 'w') > outfile.write("File ;Rule ID ;Name ;Action ; Network Protocol; > Transport Protocol; Local Port; Remote Port; Direction\n") > > for file in os.listdir(indir): > if fnmatch.fnmatch(file, '*.xml'): > full_file = indir + "\\" + file > tree = ET.parse(full_file) > root = tree.getroot() > for element in root.iter('PolicySettings'): > show_info(file, element) > > outfile.close() > > #### > > On Mon, Apr 16, 2018 at 9:07 AM, Glen <gle...@gmail.com> wrote: > > I understand, I'd love to use something else but the save game files are > in > > XML so I have no choice :'( > > > > On 16 April 2018 at 13:54, leam hall <leamh...@gmail.com> wrote: > >> > >> On Mon, Apr 16, 2018 at 7:10 AM, Glen <gle...@gmail.com> wrote: > >> > Hey guys, > >> > > >> > I'm writing a save-game editor for a game I play (just a project to > >> > learn). > >> > But I am struggling on how to structure the code, how to store the xml > >> > data > >> > in data structure etc, > >> > > >> > Can anyone recommend some source I can review that reads and writes > data > >> > from an xml file. > >> > >> A friend's comment was "life is too short for XML". I like that. Have > >> you considered JSON? Taking it a step further, MongoDB (JSON) or > >> SQLite (SQL)? Both are pretty common and standard. > >> > >> While Python has its own stuff, like Pickle, that means you can only > >> use Python. Using something like JSON or SQL means others can use the > >> data and you get a chace to develop in a shared environment. :) > >> _______________________________________________ > >> Tutor maillist - Tutor@python.org > >> To unsubscribe or change subscription options: > >> https://mail.python.org/mailman/listinfo/tutor > > > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor