Python 3.x 如何使用python将xml标记转换为字典?
我正在尝试使用python在字典中添加元素,保留键、值对。我的输入是xml,预期的输出应该是dictionary 输入:-Python 3.x 如何使用python将xml标记转换为字典?,python-3.x,Python 3.x,我正在尝试使用python在字典中添加元素,保留键、值对。我的输入是xml,预期的输出应该是dictionary 输入:- <math> <elements> <function> <val>ADD</val> </function> <operator> <val>+</val>
<math>
<elements>
<function>
<val>ADD</val>
</function>
<operator>
<val>+</val>
</operator>
<function>
<val>SUB</val>
</function>
<operator>
<val>-</val>
</operator>
</elements>
</math>
它应该返回字典,如下所示:-
[ADD:+,SUB:-]假设XML的顺序总是正确的,您可以使用和:
@amrit我已经检查了上面的链接,但它并没有解决我要找的问题。我想要一个递归函数,用于两个孩子,一个是值,另一个是键。这是一个很好的答案,但是如果这个xml有另一个带有相同标记的标记,比如@那么这个答案可以很容易地修改。我在示例中使用XML进行了回答,得到了,谢谢。我想出了一个办法。
code till now:-
from lxml import etree
from lxml.etree import _ElementTree, _Element, XMLParser
tree = etree.parsexml('math.xml')
root = tree.getroot()
mathdict = {}
for item in root.findall('./math/elements/function/'):
for d in root.findall('./math/elements/operator/'):
mathdict[item.text] = d.text
import xml.etree.ElementTree as ET
string = '''<math>
<elements>
<function>
<val>ADD</val>
</function>
<operator>
<val>+</val>
</operator>
<function>
<val>SUB</val>
</function>
<operator>
<val>-</val>
</operator>
</elements>
</math>'''
root = ET.fromstring(string)
output = {}
functions, operators = root.iter('function'), root.iter('operator')
for function, operator in zip(functions, operators):
output[function.find('val').text] = operator.find('val').text
print(output)
# {'ADD': '+', 'SUB': '-'}
output = {function.find('val').text: operator.find('val').text
for function, operator in zip(functions, operators)}