比较python中两个给定路径的两个列表中的XML标记值和JSON标记值
假设我使用字符串中的XML.tree.ElementTree构建了此XML:比较python中两个给定路径的两个列表中的XML标记值和JSON标记值,python,json,xml,Python,Json,Xml,假设我使用字符串中的XML.tree.ElementTree构建了此XML: import xml.etree.ElementTree as ET root = ET.fromstring("""<statistics> <model> <name>A1</name> <year>1994</year> <award>Y1</award>
import xml.etree.ElementTree as ET
root = ET.fromstring("""<statistics>
<model>
<name>A1</name>
<year>1994</year>
<award>Y1</award>
</model>
<model>
<name>X1</name>
<year>1990</year>
<award>Y5</award>
</model>
</statistics>""")
这两条路:
XML = 'statistics.model[].name'
JSON : 'statistics[].name'
是否有一种pythonic方法来解析这些特定路径的XML和json,并比较列表中每一个事件的标签结果值
目标是检查XML路径中的值是否成功复制到json路径上,如果成功,则打印(“在XML路径和json路径之间成功映射”)尝试以下操作:
for x, y in zip(root.findall('.//model/name'), json_data['statistics']):
if x.text != y['name']:
print('Mapping failed')
break
else:
print("Mapped succesfuly between XML path and Json Path")
这里有两个不同的主题:
xml\u root=ET.fromstring(您的\u xml)
name\u elements=xml\u root.findall('.//model/name')
xml\u result=[e.text代表名称中的e\u元素]
打印(xml_结果)
输出:
['A1', 'X1']
['A1', 'X1']
JSON
有一些库可以像Path一样使用JSON,但这里有一个简单的建议,只使用PythonJSON
模块
json_data=json.loads(您的_-json)
json_root=json_数据['statistics']
json_结果=[json_根中模型的模型['name']
打印(json_结果)
输出:
['A1', 'X1']
['A1', 'X1']
然后,您可以比较两个列表xml\u结果
和json\u结果
,以确定是否相等
如果xml\u结果==json\u结果:
print('在XML路径和Json路径之间成功映射')
到目前为止,您尝试了什么?但请注意,数据的XML和JSON表示形式并不总是具有如此简单的一对一关系。