首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python-xml解析获取数据

什么是xml?

xml(EXtensible Markup Language),可扩展标记语言。这种标记语言,类似html,不同于html,浏览器并不会解析显示xml。

xml主要是用于传输数据。xml标签都不是预定义的,使用的时候根据自己的数据,定义的标签。

xml是纯文本的,程序根据xml的标签来获取到对应的数据。

xml的树形结构

例如:

Opcai

28

98.3

80.0

xml的结构及是一个树形结构,从根开始,可以遍历到各个分支。

xml必须包含根元素,根元素是其他元素的父元素。

python 解析xml

在Python中可以使用xml.dom对xml进行解析。

文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。

一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件。

1、获取树形结构对象

import xml.dom.minidom

tree = xml.dom.minidom.parse("/tmp/1.xml")

root = tree.documentElement

print(root.nodeName)

print(root.nodeType)

print(root.nodeValue)

2、获取子节点

childNodes = root.childNodes

for node in childNodes:print(node)

3、通过标签名称查找

print(type(root))

searchNodes = root.getElementsByTagName("course")

for node in searchNodes:print(type(node))

这里可以看到查找到列表对象,跟root类型是一样的,因此可以想root一样去获取对应的数据。

4、获取标签属性

searchNodes = root.getElementsByTagName("course")

for node in searchNodes:print(node.getAttribute("name"))

5、获取标签的值

#数据都在子节点中,在子节点才能获取到数据

searchNodes = root.getElementsByTagName("course")

for node in searchNodes:

if node.firstChild is not None:print(node.firstChild.data)

# 获取所有子节点的数据

searchNodes = root.getElementsByTagName("course")

for node in searchNodes:

for subchild in node.childNodes:

print(subchild.nodeValue)

总结

也可以进行创建写操作,只是太麻烦了。唉!还是json比较好操作,你觉得呢?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190205A0GIKM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券