Добавить элемент с SAX в Python - PullRequest
0 голосов
/ 16 октября 2010

Я знаю, как анализировать xml с помощью sax в python, но как мне добавить элементы в документ, который я анализирую?Нужно ли создавать отдельный файл?

Может ли кто-нибудь привести простой пример или изменить тот, который я привел ниже.Спасибо.


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 голосов
/ 16 октября 2010

С DOM у вас есть вся структура XML в памяти.
С SAX у вас нет доступной DOM, поэтому вам нечего добавить элемент.

Основная причина использования SAX состоит в том, что структура xml действительно, действительно огромна - если это будет серьезным ударом по производительности для размещения DOM в памяти. Если это не так (как видно из вашего небольшого образца XML-файла), я бы всегда использовал DOM против SAX.

Если вы идете по маршруту DOM (который мне кажется единственным вариантом), посмотрите на lxml . Это одна из лучших библиотек Python XML.

...