我有一个程序,它将输入xml并打印相同的xml作为输出。我如何为此实现类和方法?
import xml.etree.ElementTree as ET
import sys
doc = ET.parse("users.xml")
root = doc.getroot()
root_new = ET.Element("users")
for child in root:
username = child.attrib['username']
password = child.attrib['password']
# create "user" here
user = ET.SubElement(root_new, "user")
user.set("username",username)
user.set("password",password)
#checking attribute for skipping KeyError
if 'remote_access' in child.attrib:
remote_access = child.attrib['remote_access']
user.set("remote_access",remote_access)
for g in child.findall("group"):
# create "group" here
group = ET.SubElement(user,"group")
if g.text != "lion":
group.text = g.text
tree = ET.ElementTree(root_new)
tree.write(sys.stdout)
如何将此转换为类概念。提前谢谢。
答案 0 :(得分:2)
如果我理解正确,可能有数千种方法可以做到。 你想要一个例子,这里是(我假设你的代码正在运行):
import xml.etree.ElementTree as ET
import sys
class MyXmlParser(object):
def __init__(self, xml_file_name):
self.doc = ET.parse(xml_file_name)
self.root = doc.getroot()
def do_something(self, output = sys.stdout):
root_new = ET.Element("users")
for child in self.root:
username = child.attrib['username']
password = child.attrib['password']
# create "user" here
user = ET.SubElement(root_new, "user")
user.set("username",username)
user.set("password",password)
# checking attribute - skip KeyError
try:
remote_access = child.attrib['remote_access']
user.set("remote_access", remote_access)
except KeyError:
pass
for g in child.findall("group"):
# create "group" here
group = ET.SubElement(user,"group")
if g.text != "lion":
group.text = g.text
tree = ET.ElementTree(root_new)
tree.write(output)
def main():
my_parser = MyXmlParser("users.xml")
my_parser.do_something()
if __name__ == '__main__':
main()