当前位置: 首页>编程语言>正文

入门python(第八篇)JSON & XML

JSON(JavaScript Object Nation)是一种轻量化的数据交换格式。

例如:

[
    {
        "姓名":"猪八戒",
        "sex":"man",
        "age":128
    },
    {
        "姓名":"唐三",
        "sex":"man",
        "age":128234
    },
]

python中可以使用json模块,主要有两个函数

  • json.dumps():对数据进行编码
  • json.loads():对数据进行解码
  • json.dumps():对数据文件进行编码
  • json.loads():对json文件进行解码
import json

data = [
   {
       "姓名":"猪八戒",
       "sex":"man",
       "age":128
   },
   {
       "姓名":"唐三",
       "sex":"man",
       "age":128234
   },
]

# 将python的数据结构转换为json格式
json_Data = json.dumps(data)
# 将json格式转换为python数据结构
py_data = json.loads(json_Data)

print(data)
print(json_Data)
print(type(json_Data)) # json格式是字符串类型的
print(py_data)
print(type(py_data)) 

XML指可扩展标记语言。XML被设计用来创数和存储数据。它是以要定义语义标记的规则,这些标记将文档分成很多部件并对这些部件加以标识。

例如:

<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

python有三种方法解析XML: SAX,DOM,以及EelementTree

SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂。

DOM即(Document Object Model):文档对象模型,用来将标记型文档封装成对象,并将标记型文档中的所有内容(标签、文本、属性等)都封装成对象。即标记型文档的一种解析方式。因为封装为对象就可以对其中的属性和行为进行调用,以便于对这些文档及文档中的内容进行更方便的操作。

解析方式:将标记型文档解析为一颗dom树,而树中的内容都封装为节点对象。
按照标签的层次关系体现出标签的所属,形成一个树状结构。所以我们将DOM解析文档形成的document对象称为dom树,而树中的标签以及文本甚至属性称为节点。这个节点也称为对象。标签通常也称为页面中的元素。

ElementTree将整个XML文档表示为树,并 Element表示此树中的单个节点。与整个文档的交互(读取和写入文件)通常在ElementTree关卡上完成。与单个XML元素及其子元素的交互在该Element级别上完成。

一共有两种实现方式:

  • python实现:例如:xml.ElementTree
  • c实现,速度更快,消耗内存更少一些

常用方法:

  • 获取节点属性的指:使用attrib方法
  • 获取节点的值:使用text方法
  • 获取节点名:使用tag方法
# 保证兼容性
try:
    import xml.etree.cElementTree as et
except ImportError:
    import xml.etree.ElementTree as et

tree = et.parse("a.xml")
root = tree.getroot()
print(root.get("shelf")) # 获取节点属性

for i in root.findall("movie"):
    title = i.get("title")
    print("title")
    name = i.find("name").text
    print(name)



https://www.xamrdz.com/lan/5qw1893593.html

相关文章: