Задать вопрос

Python и XML

Я новичок в языке Пайтон. Сейчас решил научится работать с XML. Как обычно — возникают сложности.

На компе Windows 7, Python 2.7

document.xml

<document>
	<name>Illya Kovalevskiy</name>
	<hobby>Computer Programming</hobby>
</document>


xml-parser.py

from xml.dom.minidom import *

xml = parse('document.xml')
name = xml.getElementsByTagName('name')

for node in name:
	print node


Запускаю, выдает — DOM Element: name at 0xblablab

Простите за очень корявый разбор.

Укажите на ошибки в разборе дерева и объясните как считать текст между тегов.

Конкретно интересует разбор уже ранее известного дерева.

P.S. Простите за грамматические ошибки, в 7 классе Киевского лицея не преподают русский язык.
  • Вопрос задан
  • 38532 просмотра
Подписаться 14 Оценить Комментировать
Решения вопроса 1
@shsmad
вуаля

from xml.dom.minidom import *

xml = parse('document.xml')
name = xml.getElementsByTagName('name')

for node in name:
	print node.childNodes[0].nodeValue
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
@bekbulatov
С lxml можно так

from lxml import etree
tree = etree.parse('document.xml')
print tree.xpath("/document/name/text()")
print tree.xpath("/document/hobby/text()")


Туториал
Ответ написан
Комментировать
taliban
@taliban
php программист
Блин, ну Вы даете.
1. Я не знаю питона
2. Я скачал питон
3. Я запустил Ваш скрипт
4. Я получил Ваш результат
5.!!!
6. PROFIT


from xml.dom.minidom import *

xml = parse('document.xml')
name = xml.getElementsByTagName('name')

for node in name:
	print dir(node)


Вывод: Новое поколение — пипец ленивое, знаете что прячется за восклицательными знаками? (рас и Два[«python список методов объекта» гугл первая же ссылка])
Ответ написан
dutchakdev
@dutchakdev
Лично я далеко не профи в Python, но язык очень нравится. Сейчас загружен и некогда засеть и углубится в него.
Но на данное время я могу родить лишь вот такое:
#demo.xml
<document>
	<name>AcidSlayer</name>
	<hobby>Python</hobby>
</document>


#habra.py
#Тут поняно
from xml.dom.minidom import parseString
#Берем фалйлик
file = open('demo.xml')
#Конвертим его в string
data = file.read()
#Тут понятно
file.close()
#Парсим сам файл
dom = parseString(data)
#Полчаем хабра теги
nameTag = dom.getElementsByTagName('name')[0].toxml()
hobbyTag = dom.getElementsByTagName('hobby')[0].toxml()
#Убераем лишнее
name=nameTag.replace('<name>','').replace('</name>','')
hobby=hobbyTag.replace('<hobby>','').replace('</hobby>','')
#Выводим
print name
print hobby


Как-то так.
Ответ написан
@Ano
Ну вы все даете. Вы в курсе, что у python есть документация? С примерами.

docs.python.org/library/xml.dom.minidom.html

Вы в курсе, что принципы DOM везде одинаковые, и есть текстовые узлы?

>>> dom = parseString('<doc><name>Non nom</name><hobby>python</hobby></doc>')
>>> textnode = dom.getElementsByTagName('name')[0].childNodes[0]
>>> print textnode
<DOM Text node "u'Non nom'">
>>> textnode.nodeType == textnode.TEXT_NODE
True
>>> textnode.nodeValue
u'Non nom'
Ответ написан
FloppyFormator
@FloppyFormator
А замечательную библиотечку ElementTree вы не пробовали? Вроде как, разбирать XML этой штукой намного проще.

P. S. Некоторые по-русски намного хуже пишут, а извиняться и не думают. У вас и ошибок-то почти нет :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы