Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python在xml文件中插入新行_Python_Xml - Fatal编程技术网

使用python在xml文件中插入新行

使用python在xml文件中插入新行,python,xml,Python,Xml,我想在xml文件中的任何MeasureSymbolGroup行之间插入一行代码。我有一些代码,但工作不正常 我的代码: tree = ET.parse(PATH_XML_FILE) root = tree.getroot() for sub in sorted(my_array): setSubValue = False for neighbor in root.iter('Command'): if "SWF" in str(neighbor.attrib):

我想在xml文件中的任何MeasureSymbolGroup行之间插入一行代码。我有一些代码,但工作不正常

我的代码:

tree = ET.parse(PATH_XML_FILE)
root = tree.getroot()
for sub in sorted(my_array):
    setSubValue = False
    for neighbor in root.iter('Command'):
        if "SWF" in str(neighbor.attrib):                
            if re.search(r"\b" + re.escape(sub) + r"\b", neighbor.text): # match whole word only
                setSubValue = True
                break

    if setSubValue == False:
        print sub
        f = ET.Element('Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true"' + sub +'\n')

        neighbor.insert(1, f)
tree.write(output.xml')
其中my_数组是一个包含字符串列表的数组

基本xml文件:

<?xml version="1.0" encoding="utf-8"?>
<T1Automation>
    <Title>AutomationTest</Title>
    <LogFilePath>..\Result\log.html</LogFilePath>
    <Script Name="Group Measurement" GuiVisible="true" ShowTraces="true" StoreTraces="true" ShutdownConnection="false">
        <Commands>
            <Command Cmd="PrintTime" />            

            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">aaa</Command>             
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">bbb</Command> 
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ccc</Command>
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ddd</Command>          
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">eee</Command>         
            <Command Cmd="DownloadMeasurement" LogIt="true"/>       
            <Command Cmd="PrintTime" />

        </Commands>
    </Script>
</T1Automation>
<?xml version="1.0" encoding="utf-8"?>
<T1Automation>
    <Title>AutomationTest</Title>
    <LogFilePath>..\Result\log.html</LogFilePath>
    <Script Name="Group Measurement" GuiVisible="true" ShowTraces="true" StoreTraces="true" ShutdownConnection="false">
        <Commands>
            <Command Cmd="PrintTime" />            

            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">aaa</Command>             
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">bbb</Command> 
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ccc</Command>
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ddd</Command>     
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">xxx</Command>             
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">eee</Command>         
            <Command Cmd="DownloadMeasurement" LogIt="true"/>       
            <Command Cmd="PrintTime" />

        </Commands>
    </Script>
</T1Automation>

自动测试
..\Result\log.html
aaa
bbb
ccc
ddd
eee
所需的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<T1Automation>
    <Title>AutomationTest</Title>
    <LogFilePath>..\Result\log.html</LogFilePath>
    <Script Name="Group Measurement" GuiVisible="true" ShowTraces="true" StoreTraces="true" ShutdownConnection="false">
        <Commands>
            <Command Cmd="PrintTime" />            

            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">aaa</Command>             
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">bbb</Command> 
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ccc</Command>
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ddd</Command>          
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">eee</Command>         
            <Command Cmd="DownloadMeasurement" LogIt="true"/>       
            <Command Cmd="PrintTime" />

        </Commands>
    </Script>
</T1Automation>
<?xml version="1.0" encoding="utf-8"?>
<T1Automation>
    <Title>AutomationTest</Title>
    <LogFilePath>..\Result\log.html</LogFilePath>
    <Script Name="Group Measurement" GuiVisible="true" ShowTraces="true" StoreTraces="true" ShutdownConnection="false">
        <Commands>
            <Command Cmd="PrintTime" />            

            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">aaa</Command>             
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">bbb</Command> 
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ccc</Command>
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ddd</Command>     
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">xxx</Command>             
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">eee</Command>         
            <Command Cmd="DownloadMeasurement" LogIt="true"/>       
            <Command Cmd="PrintTime" />

        </Commands>
    </Script>
</T1Automation>

自动测试
..\Result\log.html
aaa
bbb
ccc
ddd
xxx
eee
输出:

<?xml version="1.0" encoding="utf-8"?>
<T1Automation>
    <Title>AutomationTest</Title>
    <LogFilePath>..\Result\log.html</LogFilePath>
    <Script Name="Group Measurement" GuiVisible="true" ShowTraces="true" StoreTraces="true" ShutdownConnection="false">
        <Commands>
            <Command Cmd="PrintTime" />            

            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">aaa</Command>             
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">bbb</Command> 
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ccc</Command>
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">ddd</Command>          
            <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true">eee</Command>         
            <Command Cmd="DownloadMeasurement" LogIt="true"/>

            <Command Cmd="Print" Format="Bold">Test finished</Command>
            <Command Cmd="PrintTime">
                <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true"fff/>
                <Command Cmd="MeasureSymbolGroup" FlexType="SWF" LogIt="true"ggg/>
           </Command>
        </Commands>
    </Script>
</T1Automation>

自动测试
..\Result\log.html
aaa
bbb
ccc
ddd
eee
测试完成

xml解析器会忽略标记之间的空间,那么为什么要特别关注您遇到的问题呢?请发布一个简单的例子。你看到我的新更新的例子文件了吗?请检查一次并给出一些想法。您尚未提供完整的代码或对您尝试执行的操作的清晰描述。Hello@Bhansa,我想在aaa bbb之间插入一行新行,但在我的代码中,它将在此代码之后插入。ccc ddd eee,但在这些行之后插入