在Python中使用SAX添加元素
我知道怎么用SAX在Python中解析XML文件,但我该怎么把元素插入到我正在解析的文档里呢?我需要创建一个单独的文件吗?
有人能给我一个简单的例子,或者修改一下我下面的例子吗?谢谢。
from xml.sax.handler import ContentHandler
from xml.sax import make_parser
import sys
class aHandler(ContentHandler):
def startElement(self, name, attrs):
print "<",name,">"
def characters(self, content):
print content
def endElement(self,name):
print "</",name,">"
handler = aHandler()
saxparser = make_parser()
saxparser.setContentHandler(handler)
datasource = open("settings.xml","r")
saxparser.parse(datasource)
<?xml version="1.0"?>
<names>
<name>
<first>First1</first>
<second>Second1</second>
</name>
<name>
<first>First2</first>
<second>Second2</second>
</name>
<name>
<first>First3</first>
<second>Second3</second>
</name>
</names>
1 个回答
0
使用DOM时,你会把整个XML结构都加载到内存中。
而使用SAX时,你没有DOM这个东西,所以你也就没有地方可以添加元素。
使用SAX的主要原因是当XML结构非常非常大时——如果把DOM放到内存中会严重影响性能。如果你的XML文件不大(就像你提供的那个小样本),我建议还是用DOM,而不是SAX。
如果你选择使用DOM(在我看来这似乎是唯一的选择),可以看看lxml。这是一个非常优秀的Python XML库。