什么是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比较好操作,你觉得呢?
领取专属 10元无门槛券
私享最新 技术干货