在python中处理XML总结

本文总结了在Python中主要的几种处理XML的方法:

  1. Element Tree
  2. SAX
  3. Dom
  4. 使用第三方类库如Amara 2.x, libxml2dom 等

Element Tree

Element Tree是Python 2.5引入的使用简单,快捷的处理方法, 也是Python标准类库推荐的处理XML的方法。

它使用树形节点的形式来读写XML。Element Tree是轻量级的DOM, 所以使用方便且耗资源少。

 

比如有以下XML文件: sample.xml

 

实例代码如下:

 

输出结果:

ID: 001 Name: John

ID: 002 Name: Bill

ID: 003 Name: Rex

 

id: 001

name: John

age: 25

phone: 12345

<user id="001">

        <name>John</name>

        <age>25</age>

        <phone>9999</phone>

    </user>

 

<users>

    <user id="001">

        <name>John</name>

        <age>25</age>

        <phone>9999</phone>

    </user>

    <user id="002">

        <name>Bill</name>

        <age>30</age>

        <phone>54321</phone>

    </user>

    <user id="004"><name>jane</name><age>45</age><phone>00000</phone></user></users>

 

 

SAX

SAX处理效率较高,但只支持读文档无法修改,而且不能从文档中间开始读,只能从头读到尾。

SAX是事件驱动的,当读到xml节点开始和结尾时,调用相应的Handler函数。

 

例如以下代码处理相同的sample.xml:

 

 

 

输出结果:

start document

start element users

start element user

ID: 001

start element name

Name: John

end element name

start element age

end element age

start element phone

end element phone

end element user

start element user

ID: 002

start element name

Name: Bill

end element name

start element age

end element age

start element phone

end element phone

end element user

start element user

ID: 003

start element name

Name: Rex

end element name

start element age

end element age

start element phone

end element phone

end element user

end element users

end document

 

 

Dom

效率较低。但支持读写和查找。

例如:

 

 

输出结果:

 

ID: 001 Name: John

ID: 002 Name: Bill

ID: 003 Name: Rex

<user id="001">

        <name>John</name>

        <age>25</age>

        <phone>12345</phone>

    </user>

<user id="001">

        <name>John</name>

        <age>25</age>

        <phone>9999</phone>

    </user>

<?xml version="1.0" encoding="utf-8"?><users>

    <user id="001">

        <name>John</name>

        <age>25</age>

        <phone>9999</phone>

    </user>

    <user id="002">

        <name>Bill</name>

        <age>30</age>

        <phone>54321</phone>

    </user>

 

<user id="004"><name>jane</name><age>45</age><phone>00000</phone></user></users>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值