python中xml和json数据相互转换

水深无声 2021-10-19 12:24 505阅读 0赞

作者:lizhonglin
github: https://github.com/Leezhonglin/
blog: https://leezhonglin.github.io/

最近遇到一个问题需要使用python处理xml数据问题,我们平时的前后端交付都是使用的json来处理.但是我们现在需要和C++进行配合开发.C++主要还是使用xml来处理数据.查询了发现python有一个比较好用的库,专门来处理xmljson之间相互转换的.

安装命令

  1. pip install xmltodict

我专门写了两个处理jsonxml的函数如下

  1. import json
  2. import xmltodict
  3. b = """<?xml version="1.0" encoding="utf-8"?> <user_info> <id>12</id> <name>Tom</name> <age>12</age> <height>160</height> <score>100</score> <variance>12</variance> </user_info> """
  4. # 定义xml转json的函数
  5. def xml_to_json(xml_str):
  6. # parse是的xml解析器
  7. xml_parse = xmltodict.parse(xml_str)
  8. # json库dumps()是将dict转化成json格式,loads()是将json转化成dict格式。
  9. # dumps()方法的ident=1,格式化json
  10. json_str = json.dumps(xml_parse, indent=1)
  11. return json_str
  12. a = {
  13. "user_info": {
  14. "id": 12,
  15. "name": "Tom",
  16. "age": 12,
  17. "height": 160,
  18. "score": 100,
  19. "variance": 12
  20. }
  21. }
  22. # json转xml函数
  23. def json_to_xml(json_str):
  24. # xmltodict库的unparse()json转xml
  25. # 参数pretty 是格式化xml
  26. xml_str = xmltodict.unparse(json_str, pretty=1)
  27. return xml_str
  28. print("---------------------------分割线----------------------------------")
  29. print(xml_to_json(b))
  30. print("---------------------------分割线----------------------------------")
  31. print(json_to_xml(a))
  32. print("---------------------------分割线----------------------------------")

运行后的效果如下

  1. ---------------------------分割线----------------------------------
  2. {
  3. "user_info": {
  4. "id": "12",
  5. "name": "Tom",
  6. "age": "12",
  7. "height": "160",
  8. "score": "100",
  9. "variance": "12"
  10. }
  11. }
  12. ---------------------------分割线----------------------------------
  13. <?xml version="1.0" encoding="utf-8"?>
  14. <user_info>
  15. <id>12</id>
  16. <name>Tom</name>
  17. <age>12</age>
  18. <height>160</height>
  19. <score>100</score>
  20. <variance>12</variance>
  21. </user_info>
  22. ---------------------------分割线----------------------------------

原创作品,欢迎转载收藏…

发表评论

表情:
评论列表 (有 0 条评论,505人围观)

还没有评论,来说两句吧...

相关阅读