[Tutor] XML Programs
George Fischhof
george at fischhof.hu
Mon Apr 16 12:27:38 EDT 2018
Hi,
Maybe you should give a try to xmltodict package
George
leam hall <leamhall at 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 <glenuk at 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 <leamhall at gmail.com> wrote:
> >>
> >> On Mon, Apr 16, 2018 at 7:10 AM, Glen <glenuk at 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 at python.org
> >> To unsubscribe or change subscription options:
> >> https://mail.python.org/mailman/listinfo/tutor
> >
> >
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
More information about the Tutor
mailing list