Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 3, 2009 05:45:58

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

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

Enchantner
Ferroman
Это не мне, к счастью, это я курсовую студягам пишу :)
Так не учите их плохому :)
ЗЫ: А потом они придут сюда за решением ;)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#2 Июнь 4, 2009 23:21:19

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

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

Собственно, продолжая тему - возник такой вот нубский вопрос - я добавляю в файл ноду:

def _add_attribute(self, att, str):
app_xml = xmlp.parse(self.fullpath+"/"+self.name+"-app.xml")
root = app_xml.documentElement
try:
a = app_xml.getElementsByTagName(att)[0]
app_xml.getElementsByTagName(att)[0].childNodes[0].data = str
except:
id = app_xml.createElement(att)
node = app_xml.createTextNode(str)
id.appendChild(node)
root.appendChild(id)
res = open(self.fullpath+"/"+self.name+"-app.xml", "w")
res.writelines(app_xml.toprettyxml())
res.close()
Фишка в том, что параметр вставляется каждый раз на новой строке, то есть
<id>
blablabla
</id>
вместо
<id>blablabla</id>
Мало того, после перезаписи файла через toprettyxml() после каждой строчки вставляется еще одна пустая. Что делать с этим безобразием? toxml() неохота :)



Отредактировано (Июнь 4, 2009 23:54:31)

Офлайн

#3 Июнь 6, 2009 19:30:08

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

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

Все, короче, фиг с ним, с минидомом, пересел я на lxml. Куда более удобный, красивый и быстрее работает:

        root = etree.Element("application", xmlns="http://ns.adobe.com/air/application/1.5")
etree.SubElement(root, "id").text = id
etree.SubElement(root, "version").text = version
etree.SubElement(root, "filename").text = filename
etree.SubElement(root, "name").text = self.name
root.append(etree.XML(app_window))
handle = etree.tostring(root, pretty_print=True, encoding='utf-8', xml_declaration=True)



Офлайн

#4 Июнь 9, 2009 13:27:56

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

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

Enchantner
А ничего библиотечка.

Офлайн

#5 Июнь 9, 2009 19:18:23

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

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

Ferroman
Ага, статейку на хабре по данному поводу написал :)

http://habrahabr.ru/blogs/python/61523/



Офлайн

#6 Июнь 9, 2009 19:55:36

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

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

Ага, ну раз это ты - было бы весьма интересно перенять твой експириенс по использовании аптана (или тута, в “Инструментальных средствах разработки”, или на хабре ). А то я что-то не разобрался толком. Если не трудно, конечно.

Офлайн

#7 Июнь 9, 2009 23:02:47

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

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

Ferroman
стукни в джаббер meow-nofer@jabber.ru, так проще всего будет, наверное :)



Офлайн

#8 Июнь 10, 2009 01:36:04

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

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

Enchantner
пересел я на lxml. Куда более удобный, красивый и быстрее работает
все так, но тяжеловата - 5 метров. Если не возникает необходимости в применении схем и использовании xpath то лучше использовать ElementTree (с версии Python 2.5 входит в инсталяшку)



Офлайн

#9 Июнь 10, 2009 08:14:30

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

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

pyuser
lxml по сути привязка к сишным библиотекам, поэтому он работает очень и очень быстро. И HTML тоже парсит, кстати, отлично.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version