Menu Close

Python XML 解析

XML代表可扩展标记语言。它旨在存储和传输中小型数据,并广泛用于共享结构化信息。Python使您能够解析和修改XML文档。为了解析XML文档,您需要在内存中保存整个XML文档。在本教程中,我们将看到如何在Python中使用XML minidom类加载和解析XML文件。

在本教程中,我们将学习:

  • 如何使用minidom解析XML
  • 如何创建XML节点
  • 如何使用ElementTree解析XML

python获取xml文件方法集合

获取节点列表
nodelist = data.getElementsByTagName(大类名称)

获取第一个节点的子节点列表
childlist = nodelist[0].childNodes

获取XML节点属性值
node.getAttribute(AttributeName)

获取XML节点对象集合
node.getElementsByTagName(TagName)

返回子节点列表
node.childNodes

获取XML节点值
node.childNodes[index].nodeValue

访问第一个节点
node.firstChild ,等价于pagexml.childNodes[0]

如何使用minidom解析XML

我们已经创建了一个示例XML文件,我们将对其进行分析。

xml下载

<?xml version="1.0" encoding="UTF-8"?>
<employee>
    <name>张三</name>
    <sex>男</sex>
    <age>18</age>
    <like name="唱歌"></like>
    <like name="跳舞"></like>
    <like name="打球"></like>
</employee>

python代码:

import  xml.dom.minidom

doc = xml.dom.minidom.parse("demo.xml")
print(doc.nodeName)
print(doc.firstChild.tagName)
print(doc.getElementsByTagName("name")[0].childNodes[0].data)
print(doc.getElementsByTagName("sex")[0].childNodes[0].data)
print(doc.getElementsByTagName("age")[0].childNodes[0].data)
l = doc.getElementsByTagName("like")
for like in l:
    print(like.getAttribute("name"))

output:

#document
employee
张三
男
18
唱歌
跳舞
打球

创建XML节点

我们可以使用“ createElement”函数创建一个新属性,然后将此新属性或标签附加到现有XML标签

示例:

newlike = doc.createElement("like")
newlike.setAttribute("name", "游泳")
doc.firstChild.appendChild(newlike)

使用ElementTree解析XML

ElementTree是用于处理XML的API。ElementTree是处理XML文件的简单方法。

我们将以下XML文档用作示例数据:

<data>
   <items>
      <item name="expertise1">SQL</item>
      <item name="expertise2">Python</item>
   </items>
</data>

使用ElementTree读取XML:

我们必须首先导入xml.etree.ElementTree模块。

import xml.etree.ElementTree as ET

获取根元素:

root = tree.getroot()

完整代码:

import xml.etree.ElementTree as ET
tree = ET.parse('items.xml')
root = tree.getroot()
for elem in root:
   for subelem in elem:
      print(subelem.text)

output:

SQL
Python

python系列教程目录

附件下载

Posted in Python

发表评论

相关链接