欢迎访问宙启技术站
智能推送

如何在Python中使用xml.dom解析XML元素

发布时间:2023-12-16 04:51:35

在Python中,可以使用xml.dom模块来解析XML元素。xml.dom模块提供了简单且有效的方式来解析XML文档,并以对象的形式表示XML元素。

下面是使用xml.dom解析XML元素的步骤:

1. 导入xml.dom模块:

运行以下代码导入xml.dom模块:

   import xml.dom.minidom
   

2. 打开XML文件:

使用xml.dom模块的parse()函数打开XML文件并创建DOM对象。该函数会返回一个Document对象,表示整个XML文档。

   dom = xml.dom.minidom.parse("example.xml")
   

3. 获取根元素:

使用Document对象的documentElement属性获取根元素节点:

   root = dom.documentElement
   

4. 获取子元素:

使用Element对象的getElementsByTagName()方法获取指定标签名的所有子元素节点。该方法返回一个列表,我们可以使用下标或循环遍历列表来获取每个子元素节点的属性和值。

   elements = root.getElementsByTagName("book")
   for element in elements:
       title = element.getElementsByTagName("title")[0].childNodes[0].data
       author = element.getElementsByTagName("author")[0].childNodes[0].data
       print("Title: ", title)
       print("Author: ", author)
   

5. 获取元素属性:

使用Element对象的getAttribute()方法获取元素节点的属性的值。

   for element in elements:
       id = element.getAttribute("id")
       print("ID: ", id)
   

6. 创建和修改元素:

使用Document对象的createElement()方法创建新的元素节点,并使用Element对象的appendChild()方法将其添加为子元素。

   new_element = dom.createElement("book")
   new_title = dom.createElement("title")
   new_title.appendChild(dom.createTextNode("New Book"))
   new_element.appendChild(new_title)
   root.appendChild(new_element)
   

7. 删除元素:

使用Element对象的removeChild()方法从父元素中删除子元素节点。

   for element in elements:
       root.removeChild(element)
   

下面是一个完整的使用xml.dom解析XML元素的例子:

import xml.dom.minidom

# 打开XML文件并创建DOM对象
dom = xml.dom.minidom.parse("example.xml")
# 获取根元素
root = dom.documentElement
# 获取所有book元素
elements = root.getElementsByTagName("book")

# 获取每个book元素的属性和值
for element in elements:
    id = element.getAttribute("id")
    title = element.getElementsByTagName("title")[0].childNodes[0].data
    author = element.getElementsByTagName("author")[0].childNodes[0].data
    print("ID: ", id)
    print("Title: ", title)
    print("Author: ", author)

# 创建并添加新的book元素
new_element = dom.createElement("book")
new_title = dom.createElement("title")
new_title.appendChild(dom.createTextNode("New Book"))
new_element.appendChild(new_title)
root.appendChild(new_element)

# 删除所有book元素
for element in elements:
    root.removeChild(element)

# 将修改后的DOM对象保存到文件中
with open("new_example.xml", "w") as file:
    dom.writexml(file)

以上就是在Python中使用xml.dom解析XML元素的基本步骤和示例。