通过元素树填充子元素下的值

时间:2018-10-31 07:49:02

标签: python

我有一个xml文件和另一个文本文件,并且我编写了脚本来解析该文本文件并获取包含键和值的字典,现在我必须进入xml文件并为child testgroup的child填充值,值包括test case_title,inddent等,

并且还基于脚本中aa的长度,我需要在测试组中创建子级,我在elementtree中的暴露量最小,任何建议都将非常有帮助。

 xml = """<?xml version="1.0" encoding="UTF-8"?>

    <testmodule title="hello" version="version 2">
       <description> 'world' </description>

       <engineer>
           <info>
               <name>Test </name>
               <description> 'test' </description>
           </info>
       </engineer>

       <preparation>
           <initialize title="Set">
           </initialize>
       </preparation>
     <variants>
        <variant name="A">Test  </variant>
        <variant name="B">test</variant>
        <variant name="C">Test  test</variant>
    </variants>

       <testgroup title="Testing" ident="Testing" >

                    <testcase title="Check" ident= "3_1" name="Number" variants="A">
                        <param name="Testcase" type="string">Checking of Correct SW and Part identifiers </param>
                        <param name="TestcaseRequirements" type="string"></param>
                        <param name="Test" type="string">TS_Automation=Manual;TS_Method=Bench_Test;TS_Priority=1;TS_Tested_By=rjrjjn;TS_Written_By=SUN;TS_Review_done=No;TS_Regression=No;</param>
                    </testcase> 
    """



ee=''
with open('C:\\Users\\rjrn8w\\Desktop\\Test.txt', "r") as f:
    for i in f:
        ee+=i
import re
aa=re.findall(r'<TC_HEADER_START>([\s\S]*)</TC_HEADER_END>',ee)

for j in aa:

    k=j.strip()
    new_dict={}
    ak=dict(re.findall(r'(\S+)=(.*)', j.strip()))
    print ak
    import xml.etree.ElementTree as ET
    tree = ET.parse('C:\\Users\\rjrn8w\\Documents\\My Received Files\\new.xml')
    root = tree.getroot()
    for child in root:
        if  child.tag=='testgroup':
            for element in child:
                for elem in element:
                    import pdb;pdb.set_trace()
                    print elem.tag


 ak={'TS_Regression': 'No', 'ident': '1 ', 'TestcaseRequirements': '36978', 'name': '"T01">', 'title': '"DHCP " ', 'TS_Review_done': 'Yes;', 'TestcaseTestType': 'Test', 'TS_Priority': '1;', 'TS_Tested_By': 'qz9ghv;', 'TS_Techniques': 'Full Testing;', 'variants': '"A C" ', 'StakeholderRequirements': '1236\t\t\t\t', 'TS_Implemented': 'Yes;', 'TS_Automation': 'Automated;', 'TestcaseDescription': ' This test verifies DHCP discovery is halted after tester is connected'}

1 个答案:

答案 0 :(得分:0)

您可以阅读python文档,其中包含有关如何创建Element,添加属性,添加值以及如何将新元素作为子元素添加到现有元素的内容。

child=xml.etree.ElementTree.Element(tag, attrib={}, **extra) 
existedelement.append(child)