Найти - Пользователи
Полная версия: xml.dom.minidom - как добавить ноду?
Начало » Python для новичков » xml.dom.minidom - как добавить ноду?
1 2
PooH
Enchantner
Ferroman
Это не мне, к счастью, это я курсовую студягам пишу :)
Так не учите их плохому :)
ЗЫ: А потом они придут сюда за решением ;)
Enchantner
Собственно, продолжая тему - возник такой вот нубский вопрос - я добавляю в файл ноду:
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() неохота :)
Enchantner
Все, короче, фиг с ним, с минидомом, пересел я на 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)
Ferroman
Enchantner
А ничего библиотечка.
Enchantner
Ferroman
Ага, статейку на хабре по данному поводу написал :)

http://habrahabr.ru/blogs/python/61523/
Ferroman
Ага, ну раз это ты - было бы весьма интересно перенять твой експириенс по использовании аптана (или тута, в “Инструментальных средствах разработки”, или на хабре ). А то я что-то не разобрался толком. Если не трудно, конечно.
Enchantner
Ferroman
стукни в джаббер meow-nofer@jabber.ru, так проще всего будет, наверное :)
pyuser
Enchantner
пересел я на lxml. Куда более удобный, красивый и быстрее работает
все так, но тяжеловата - 5 метров. Если не возникает необходимости в применении схем и использовании xpath то лучше использовать ElementTree (с версии Python 2.5 входит в инсталяшку)
Enchantner
pyuser
lxml по сути привязка к сишным библиотекам, поэтому он работает очень и очень быстро. И HTML тоже парсит, кстати, отлично.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB