比较python中两个给定路径的两个列表中的XML标记值和JSON标记值

比较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>

假设我使用字符串中的XML.tree.ElementTree构建了此XML:

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")

这里有两个不同的主题:

  • 如何使用XPath获取XML树的元素
  • 如何解析JSON路径以获取JSON对象的元素
  • XML 要获取XML名称,可以使用以下内容:

    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,但这里有一个简单的建议,只使用Python
    JSON
    模块

    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表示形式并不总是具有如此简单的一对一关系。