Python 2.7 使用文本文件为etree xml提供输入

Python 2.7 使用文本文件为etree xml提供输入,python-2.7,elementtree,Python 2.7,Elementtree,我有一个xml文件,我需要从etee更改这个xml文件中的2个参数 XML file: <?xml version="1.0"?> <ABC_Input xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <REQ> <!-- Optional in XSD --> <INFO>ALL</INFO> </REQ> <PO> <PO_

我有一个xml文件,我需要从etee更改这个xml文件中的2个参数

XML file:
<?xml version="1.0"?>
<ABC_Input xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<REQ>  
<!-- Optional in XSD -->
<INFO>ALL</INFO>
</REQ>
<PO>
<PO_ID>3557698</PO_ID>
<!-- Req in XSD -->
<RAN>HQF011512C</RAN>
<!-- Req in XSD -->
</PO>
</ABC_Input>
现在我需要将文本文件中的RAN&pou ID的值作为输入传递,那么这怎么可能呢?

尝试以下方法:

import xml.etree.ElementTree as ET

# Read the file (called alpha.txt) and extract the lines
lines = []
with open('alpha.txt', 'r') as txtF:
    lines = txtF.readlines()

# A dictionary to hold PO_ID and RAN values 
values = {}
# If there are multiple values of PO_ID or RAN then it will take the last entry in the text file
for line in lines:
    line = line.strip()
    if 'RAN' in line:
        values['RAN'] = line[line.find('RAN')+len('RAN')+1:]
    elif 'PO_ID' in line:
        values['PO_ID'] = line[line.find('PO_ID')+len('PO_ID')+1:]
    else:
        continue

tree = ET.parse('alpha.xml')
root = tree.getroot()
for val in root.findall('PO'):
    val.find('PO_ID').text = values['RAN']
    val.find('RAN').text = values['PO_ID']
tree.write('output1.xml')

这个文本文件是什么样子的?taxt文件在文本文件alpha.txt的两行中包含两个条目:RAN:HQF011512 PO_ID:3557698如果我以alpha.xml形式提供输入,则在文本文件alpha.txt中包含两个条目RAN:HQF011512 PO_ID:3557698 gamma.xml RAM:454567 CASE:AASDFE和在我的代码中,而不是编写alpha.xml,无论NOTEPAD中存在哪个xml名称,它将使用notepad tree=ET.parse('alpha.xml')中提供的标记更新该xml中的标记值ex:now代码将更新alpha.xml中的RAN&PO_ID和gamma.xml中的RAM&CASE是的,您可以轻松地做到这一点。只需更改line in lines的解析循环
,并更改字典结构,以包含文本文件中所需的所有值。类似于:
{'alpha.xml':{'PO_ID':3557698,'RAN':HQF011512},'gamma.xml':{'RAM':123,'CASE':456}
谢谢,但是我必须在代码中解析什么,或者你能告诉我在字典和循环树=ET.parse('alpha.xml')中哪里可以更新吗?如果你坚持发布错误消息和试用代码,请尝试一下。基本上,您知道如何读取txt文件以及如何解析xml文件,因此这应该不是一个大问题。
import xml.etree.ElementTree as ET

# Read the file (called alpha.txt) and extract the lines
lines = []
with open('alpha.txt', 'r') as txtF:
    lines = txtF.readlines()

# A dictionary to hold PO_ID and RAN values 
values = {}
# If there are multiple values of PO_ID or RAN then it will take the last entry in the text file
for line in lines:
    line = line.strip()
    if 'RAN' in line:
        values['RAN'] = line[line.find('RAN')+len('RAN')+1:]
    elif 'PO_ID' in line:
        values['PO_ID'] = line[line.find('PO_ID')+len('PO_ID')+1:]
    else:
        continue

tree = ET.parse('alpha.xml')
root = tree.getroot()
for val in root.findall('PO'):
    val.find('PO_ID').text = values['RAN']
    val.find('RAN').text = values['PO_ID']
tree.write('output1.xml')