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 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