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

 

 

 

 

 

阅读更多
个人分类: python xml
想对作者说点什么? 我来说一句

python处理XML文档

2011年08月11日 122KB 下载

python生成xml

2010年05月10日 2KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭