Python: Modifying an XML File

后端 未结 1 1289
日久生厌
日久生厌 2021-01-29 00:32

I\'m stuck, I\'ve written a code that looks for specific index in xml file. But when find that Index won\'t create me a new xml file with just that Index in and constant paramet

1条回答
  •  一向
    一向 (楼主)
    2021-01-29 00:45

    I solved it! :D Insted of xml.etree.ElementTree modul I use xml module and insted of ObjectDictionary.remove(Variable) I use Variable.clear()

    I use lxml module

    from lxml import etree as ET
    tree = ET.parse('master.xml')
    root = tree.getroot()
    

    -

    s = input('Insert a number of index and add quotes(") befor and after: ')
    i = int(s, 16)
    
    for MagicNumber in root.findall('MagicNumber'):   #constant parameters
        print MagicNumber.tag,':', MagicNumber.text
        print('\n')
    for FileInfo in root.find('FileInfo'):
        print FileInfo.tag,':', FileInfo.text
    print''
    for DeviceInfo in root.find('DeviceInfo'):
        print DeviceInfo.tag,':', DeviceInfo.text
    print''
    for DummyUsage in root.find('DummyUsage'):
        print DummyUsage.tag,':', DummyUsage.text
    print''
    for ObjectDictionary in root.find('ObjectDictionary'):
        name=ObjectDictionary.get('name')
        print ObjectDictionary.tag,':', ObjectDictionary.text, name
        print''                                                       #constant parameters
    
        for Variable in ObjectDictionary.iter('Variable'):          #searching for Variables in index
            if Variable.find('./Index').text == str(i):
                print 'Variable name: ', Variable.attrib['name']
            elif Variable.find('./Index').text != str(i):
                Variable.clear()                         #insted of ObjectDictionary.remove(Variable)
    
        for Record in ObjectDictionary.iter('Record'):             #searching for Records in index
            if Record.find('./Index').text == str(i):
                print 'Record name: ', Record.attrib['name']
            elif Record.find('./Index').text != str(i):
                Record.clear()                             #insted of ObjectDictionary.remove(Record)
    
        for Array in ObjectDictionary.iter('Array'):               #searching for Arrays in index
            if Array.find('./Index').text == str(i):
                print 'Array name: ', Array.attrib['name']
            elif Array.find('./Index').text != str(i):
                Array.clear()                               #insted of ObjectDictionary.remove(Array)
    
    
    tree.write('output.xml')            #create a new xml file
    

    In new xml file is now left just tags of variables,records and arrays.

    Have anybody any idea how to solved out this (I hope) last problem?

    0 讨论(0)
提交回复
热议问题