我已经把XML输入为国家.xml:-
<root>
<set>
<name>Countries</name>
<elements>
<name>US</name>
<city>
<val>New York</val>
<val>Las Vegas</val>
</city>
</elements>
<elements>
<name>UK</name>
<city>
<val>London</val>
</city>
</elements>
</set>
</root>
我正在解析xml并将其放入一个列表中,我有一个字典,在此基础上比较和添加xml元素。你知道吗
diction: dict = {'US':['New York', 'Chicago'], 'UK':['OXFORD', 'London']}
source = etree.getroot()
for key,value in diction.items()
countrylist = source.xpath('./elements/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]
else:
countinue
# writebacktoxml(source,"country.xml")
我得到的输出是原始的输入条件,因为它是在特定条件的输出。 预期输出为下图:-你知道吗
<root>
<set>
<name>Countries</name>
<elements>
<name>US</name>
<city>
<val>New York</val>
<val>Chicago</val>
</city>
</elements>
<elements>
<name>UK</name>
<city>
<val>OXFORD</val>
<val>London</val>
</city>
</elements>
</set>
</root>
在
.clear
附近添加一个条件文档:The lxml.etree Tutorial - The E-factory
Python Documentation -The ElementTree XML API - Modifying an XML File
使用
lxml
的示例数据
dict
实例化一个
ElementMaker
对象和一个新的<val>...</val>
对象。你知道吗解析源代码
xml
解析所有
set/elements
获取此
name
的element
获取这个
table_category
的element
和.clear
它循环为
[name.text]
定义的diction
中list
的所有项。你知道吗在
table_category
后面加一个新的<val>val</val>
用Python:3.5测试
相关问题 更多 >
编程相关推荐