在Python中使用SAX添加元素

0 投票
1 回答
647 浏览
提问于 2025-04-16 05:34

我知道怎么用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库。

撰写回答