根据用户输入,通过python脚本添加多个动态行
假设下面是一个xml文件的示例根据用户输入,通过python脚本添加多个动态行,python,Python,假设下面是一个xml文件的示例 <AVP code="123" name="abcd"> <type> <high/> </type> </AVP> <AVP code="234" name="ukbkj"> <type> <enum/> </type> <enum name="erdf"/> <enum name="asdc"/> .....
<AVP code="123" name="abcd">
<type>
<high/>
</type>
</AVP>
<AVP code="234" name="ukbkj">
<type>
<enum/>
</type>
<enum name="erdf"/>
<enum name="asdc"/>
.....
.....
(here we can add many enum name 2 4 7 9 whatever)
</AVP>
<State>
</State>
.....
.....
(在这里,我们可以添加许多枚举名称2 4 7 9任何内容)
在这个xml文件中,我必须添加AVP及其所有属性(请参见上面从“AVP标记”到“/AVP标记”的代码)。但是添加应该在状态标记之前完成。此外,我们还必须检查,如果avp类型是“enum/”标记,那么我们必须在“/type”标记之后添加“enum name”标记,这可以是任何数字,我可以通过“while loop”实现,但如果它不是“enum/”标记,那么“/type”标记之后将不会添加任何内容
示例我想添加两个AVP,一个代码为909,名称为earth,类型为high。
另一个是code=169,name=universe,type=enum(当enum出现时),然后用户add请求enum name,这应该在循环中完成,最后应该将其断开,以便可以输出控件。并且输入应该添加到xml文件中。
我试图做的是在while循环中:
要求用户输入选项,如1以插入AVP 2以删除,3以退出:
如果用户输入1,则给出avp代码、名称、类型等。
如果他插入2,然后删除AVP(我不希望你们都回答这个问题,请忽略删除操作)
如果插入,则将使用break退出,如果为True:
while True:
choice = str(input("Press 1 to Insert 2 to Delete 3 to exit "))
if choice == '1':
avp_code = raw_input("enter avp code: ")
avp_name = raw_input("enter avp name: ")
avp_type = raw_input("enter the avp type: ")
vendor_id = raw_input("enter the vendor Id: ")
line1 = '\t\t<AVP code="'+avp_code+'" name="'+avp_name+'" vendor-id="'+vendor_id+'">\n\t\t\t<type>\n\t\t\t\t<'+avp_type+'/>\n\t\t\t</type>'
line2 = ''
while avp_type == "enum":
enum_type = raw_input("enter enumeration name: ")
line2 += '\n\t\t\t<enum name="'+enum_type+'"/>'
enum_choice = raw_input("Add another enumeration name: yes Or no: ")
if enum_choice == "yes":
continue
else:
break
line3 = '\n\t\t</AVP>'
lines = line1 + line2 + line3
for line in fileinput.input(GMPS_TOP + "_hss1/dra/test.xml", inplace=True):
if line.strip() == '</Base>':
print lines
print line,
if choice == 3:
break
choice=str(输入(“按1插入2删除3退出”))
如果选项==“1”:
avp_代码=原始输入(“输入avp代码:”)
avp\U名称=原始输入(“输入avp名称:”)
avp类型=原始输入(“输入avp类型:”)
供应商id=原始输入(“输入供应商id:”)
第1行='\t\t\n\t\t\t\n\t\t\t\t\t\n\t\t\t'
第2行=“”
而avp_type==“enum”:
枚举类型=原始输入(“输入枚举名称:”)
line2+='\n\t\t\t'
枚举选项=原始输入(“添加另一个枚举名称:是或否:”)
如果枚举_选项==“是”:
持续
其他:
打破
第3行='\n\t\t'
线条=线条1+线条2+线条3
对于fileinput.input(GMPS_TOP+“_hss1/dra/test.xml”,inplace=True)中的行:
如果line.strip()='':
打印行
打印行,
如果选项==3:
打破
享受 你的问题到底是什么?你想做几件事,哪一件对你来说是个问题,你已经试过什么了?不要试图一下子实现所有的事情。实现对XML的更新。实现用户输入。实现循环。如果你有困难,可以问一个问题。@FrancisColas我的问题是根据用户输入添加多行。请理解。。。。不要对我的问题投反对票。@PeterWood嘿,我没有实施很多事情。我只是根据用户输入插入行。请理解它。。。如果你不能理解,那么你可以不加暗示地离开。。但不要对我的问题投反对票。你确实应该把你的问题分开,自己尝试一下,当你在某个地方陷入困境时,在这里提问。我们很乐意帮助你。目前,你的问题归结为:“我需要A、B、C。告诉我怎么做。”。