10.3.5-用DOM解析XML和用DOM实现对XML内容的修改

本文介绍如何使用Python的minidom模块解析和编辑XML文档。通过实例展示了读取XML元素信息的方法,包括类别、名称、数量和价格等,并演示了如何修改商品价格及删除节点。

1.使用minidom解析 XML 文档

import xml.dom.minidom
# 使用minidom解析器打开 XML 文档
document_tree=xml.dom.minidom.parse("storehouse.xml")
collection=document_tree.documentElement#把所有元素存入集合中
print(collection.toxml())
goods= collection.getElementsByTagName("goods")

goods_record=[]
for good_object in goods:          #获取商品的详细信息
   if good_object.hasAttribute("category"):
      goods_record.append(good_object.getAttribute("category"))
   name= good_object.getElementsByTagName('name')[0]
   goods_record.append(name.childNodes[0].data)
   amount= good_object.getElementsByTagName('amount')[0]
   goods_record.append(amount.childNodes[0].data)
   price = good_object.getElementsByTagName('price')[0]
   goods_record.append(price.childNodes[0].data)
print(goods_record)
   

C:\Anaconda3\python.exe D:/AI/三酷猫源代码/10/DOM_parse_XML.py
<storehouse>
    <goods category="fish">
        <title>淡水鱼</title>
        <name>鲫鱼</name>
        <amount>18</amount>
        <price>8</price>
    </goods>
    <goods category="fruit">
        <title>温带水果</title>
        <name>猕猴桃</name> 
        <amount>10</amount>
        <price>10</price>
    </goods>
</storehouse>
['fish', '鲫鱼', '18', '8', 'fruit', '猕猴桃', '10', '10']

Process finished with exit code 0

2.用DOM实现对XML内容的修改

修改前

<storehouse>
    <goods category="fish">
        <title>淡水鱼</title>
        <name>鲫鱼</name>
        <amount>18</amount>
        <price>8</price>
    </goods>
    <goods category="fruit">
        <title>温带水果</title>
        <name>猕猴桃</name> 
        <amount>10</amount>
        <price>10</price>
    </goods>
</storehouse>
import xml.dom.minidom 
# 使用minidom解析器打开 XML 文档
document_tree=xml.dom.minidom.parse("storehouse.xml")
collection=document_tree.documentElement#把所有元素存入集合中
price= collection.getElementsByTagName("price")
price_object=price[0]
price_object.firstChild.data=8.2
print('修改商品价格成功!')

goods=collection.getElementsByTagName("goods")
collection.removeChild(goods[1])
#collection.removeChild(collection.childNodes[1])
print('节点删除成功!')
f=open("storehouse.xml","w",encoding="utf-8")
f.write(document_tree.toxml())
f.close()    

C:\Anaconda3\python.exe D:/AI/三酷猫源代码/10/DOM_edit_XML.py
修改商品价格成功!
节点删除成功!

Process finished with exit code 0

修改后

<?xml version="1.0" ?><storehouse>
    <goods category="fish">
        <title>淡水鱼</title>
        <name>鲫鱼</name>
        <amount>18</amount>
        <price>8.2</price>
    </goods>
    
</storehouse>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值