Уведомления

Группа в Telegram: @pythonsu

#1 Май 25, 2009 19:24:02

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

Уже запарился искать. В документации написано только, как создать файл заново, но не буду же я его перезаписывать целиком.

Пытался сделать так:

import xml.dom.minidom as xmlp

dom = xmlp.Document()
dom.load("./database.xml")
users = dom.documentElement
adduser = users.createTextNode("user")
users.appendChild(adduser)
Не катит, выдает ошибку на dom.load . С dom.loadXML то же самое, та же ошибка. Как грамотно сделать и сохранить результат?



Офлайн

#2 Май 26, 2009 02:13:08

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

Что-то не нашел я используемые Вами методы load и loadXML у класса Document (Node) :(
Используйте функции модуля parse и parseString соответственно



Офлайн

#3 Май 26, 2009 17:13:32

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

pyuser
Не, ну понятно, само дерево я получить-то могу:
dom = xmlp.parse(“./database.xml”)
а вот что дальше делать…
Распарсить и получить информацию легко, перезаписать файл - тоже. Но мне хочется именно добавить.

UPD: Хмм, интересно, работает вот такая схема:

dom = xmlp.parse("./database.xml")
root = dom.documentElement
elem = dom.createElement('user')
root.appendChild(elem)
Но как сохранить примененные изменения в документ - по прежнему не пойму.



Отредактировано (Май 26, 2009 18:31:32)

Офлайн

#4 Май 27, 2009 01:25:54

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

Заглядываем в исходник и буквально сразу натыкаемся на методы toxml и toprettyxml :)



Офлайн

#5 Май 28, 2009 16:57:45

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

pyuser
ага, только это влияет на структуру дерева внутри программы. Никаких изменений во внешний файл не вносится ;) В любом случае его приходится перезаписывать полностью.



Офлайн

#6 Май 29, 2009 06:23:36

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

Enchantner
В любом случае его приходится перезаписывать полностью.
А Вы полагаете другие парсеры работают подругому?!



Офлайн

#7 Май 30, 2009 00:27:07

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

pyuser
То есть в любом случае надо перезаписывать весь файл?



Офлайн

#8 Май 30, 2009 16:00:16

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

Лучшее, что можно сделать - открыть файл, в режиме ‘r+w’ и перезаписывать только с той позиции, где начинаются изменения (узнать позицию -> pos = f.tell(), перейти на позицию -> f.seek(pos)), иначе - никак.



Офлайн

#9 Июнь 1, 2009 13:46:17

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

xml - не лучший вариант для использования в качестве базы данных.

Офлайн

#10 Июнь 2, 2009 19:04:04

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

xml.dom.minidom - как добавить ноду?

Ferroman
Это не мне, к счастью, это я курсовую студягам пишу :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version