我已经把XML输入为国家.xml:-
<root>
<set>
<name>US</name>
<stringval>New York</stringval>
</set>
<set>
<name>UK</name>
<integerval>12</integerval>
</set>
</root>
我正在解析xml并将其放入一个列表中,我有一个字典,在此基础上比较和添加xml元素。你知道吗
diction: dict = {'US':'Chicago', 'UK':'London'}
source = etree.getroot()
for key,value in diction.items()
countrylist = source.xpath('./set/name[text()=\'{}\']/..'.format(key))
if len(countrylist) == 0:
# creating new string and element
# appending element to original tree
elif len(countrylist) == 1: ###This is problematic case what to expect here to update key,value from dictionary only and replace the tag already present in xml
key = countrylist[0]
e = ElementMarker()
stringval = e.stringval
integerval = e.integerval
for element in source.findall('./set'):
name = element.find('name')
integervalue = element.find('integerval')
stringvalue = element.find('stringval')
if stringvalue is None:
source.clear()
for val in diction[name.text]:
source.append(stringval(val))
else:
continue
# writebacktoxml(source,"country.xml")
我得到的输出是原始的输入条件,因为它是在特定条件的输出。 预期输出为下图:-你知道吗
<root>
<set>
<name>US</name>
<stringval>Chicago</stringval>
</set>
<set>
<name>UK</name>
<stringval>London</stringval>
</set>
</root>
也许您可以复制XML文件,然后对其进行修改,而且,我认为最好迭代一次XML并与您的字典进行比较,而不是每次迭代字典并读取XML文件(这可能会导致性能问题),下面是一个示例:
这是输出:
请注意,如果在词典中找不到国家名称,“set”条目将不会被修改。你知道吗
相关问题 更多 >
编程相关推荐