zoukankan      html  css  js  c++  java
  • XML和JSON的系列操作

    来自lxml于xpath文件存储

    操作XML

    读取XML文件,使用parse函数
    就是
    from lxml import etree
    tree = etree.parse('text.xml')

    转化成字符串形式的XML

    a = str(etree.tostring(tree,encoding='utf-8'))

    分析字符串形成的XML文档

    也就是使用etree.formstring(a)

    操作HTML文档

    HTML与XML相似,都是由若干节点组成的。但XML只有这些节点,而HTML不仅有节点,还有其任何文本。

    获取根节点与某个节点的所有子节点

    root = tree.getroot()
    root.getchildren()

    读取与搜索XML文件

    在一定程度上
    from xml.etree.ElementTree import parse等价于
    from lxm.etree import parse
    都是通过parse函数打开xml文件
    然后再通过XPath语法来搜索节点

    将字典转化为XML字符串

    将字典转化为XML文件需要使用dicttoxml模块中的dicttoxml函数
    bxml = dicttoxml.dicttoxml(d, custom_root = 'persons') # 这里传入的是字节形式,需要之后自己转码
    d是传入的字典对象,custom_root = 'persons因该是在为根节点命名
    用utf-8编码格式解码XML字符串
    xml = bxml.decode('utf-8')
    这里解析得到的xml文件并没有采用parse函数
    而是使用from xml.dom.minidom import parseString模块
    dom = parseString(xml)

    生成带缩进格式的XML字符串

    prettyxml = dom.toprettyxml(indent = ' ')

    将XML转换为字典

    xmltodict模块
    d = xmltodict.parse(xml)

    处理JSON格式的数据

    JSON格式的数据可以保存数组和对象,JSON数组用一对中括号将数据括起来,JSON对象用一个大括号将数据括起来。注意:key和字符串类型的值要用双引号括起来,不呢个使用单引号

    JSON字符串与字典相互转换

    字典转换为JSON采用json模块的dumps函数,该函数需要将字典通过参数传入,然后返回与字典对应的JSON字符串
    json_dict = json.dumps(data)
    将JSON字符串转化为字典可以使用json的loads函数,该函数通过参数传入JSON字符串,然后返回与该JSON字符串对应的字典
    data = json.loads(json_dict)
    还可以使用eval函数将JSON格式的字符串当作普通的Python代码执行
    data = eval(json_dict)
    eval函数会直接返回与JSON格式字符串对应的字典。
    由于eval函数可以执行任何Python代码,如果JSON字符串中包含了有害的Python代码,执行JSON字符串可能会带来风险;所以尽量使用loads,不要使用eval函数

    将JSON字符串转化为类实例

    loads函数不仅可以将json字符串转化为字典,还可以将其转化为类实例
    转换的关键是给loads函数加一个object_hook关键字参数指定一个类或者一个回调函数
    变成一个类实例的话就可以使用点(.)来直接调用json字符串中的属性。

    将类实例转化为JSON字符串

    dumps函数不仅可以将字典转换为一个JSON字符串,还可以将类实例转化为JSON字符串。dumps函数需要通过default关键字指定一个回调函数,在转化的过程中,dumps函数会向这个回调函数传入类实例,而回调函数是将类实例转化为字典,而dumps函数再将字典转化为JSON字符串
    (但这里最好提前了解到属性名称,也就是键,才不容易转化成新的字典样子出错)

    类实例列表与JSON字符串相互转换

    将JSON字符串转换为XML字符

    json字符串》字典》xml
    loads==>dicttoxml

    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    字符串 CSV解析 表格 逗号分隔值 通讯录 电话簿 MD
    Context Application 使用总结 MD
    RxJava RxPermissions 动态权限 简介 原理 案例 MD
    Luban 鲁班 图片压缩 MD
    FileProvider N 7.0 升级 安装APK 选择文件 拍照 临时权限 MD
    组件化 得到 DDComponent JIMU 模块 插件 MD
    gradlew 命令行 build 调试 构建错误 Manifest merger failed MD
    protobuf Protocol Buffers 简介 案例 MD
    ORM数据库框架 SQLite 常用数据库框架比较 MD
    [工具配置]requirejs 多页面,多入口js文件打包总结
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15366666.html
Copyright © 2011-2022 走看看