Добрый день.
Использую стандартную xml.dom.minidom
Хочу прочитать значение тега из XML файла, и у меня это не получается по непонятной мне причине.
Делаю так:
from xml.dom.minidom import *
sitemap_file = parse(open('C:/home/test.xml'))
urls = sitemap_file.getElementsByTagName('url')
loc = urls[0].getElementsByTagName('loc')
print loc[0].nodeValue
Пишет: None
Хочу, чтоб писало: 'http://www.exapple.com/a'
Файл C:/home/test.xml :
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.exapple.com/a</loc>
<lastmod>2012-12-20</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
</urlset>
Что я делаю не так?
Если кто-то пользуется другой удобной библиотекой, поделитесь. Мне надо только читать XML, писать ненадо.
Заранее спасибо.
polusok
(Mykhailo Poliarush)
08.Январь.2013 15:38:51
#2
loc[0].firstChild.nodeValue
а вообще можно и через ElementTree , я так учу в своем курсе http://poliarush.com/trainings/python
например
from xml.etree import ElementTree as et
for el in et.parse('test.xml').getroot().findall(".//*"):
print el.text
AlexA
(Alex.A)
09.Январь.2013 06:55:30
#3
я делаю xml-парсинг следующим образом:
import urllib2 from xml.dom.minidom import parseString file1 = urllib2.urlopen('/filePath') data = file1.read() file1.close() dom = parseString(data) TagXml = dom.getElementsByTagName('Tag')[0].toxml()
print TagXML
Вопрос в тему:
как вернуть содержимое атрибута тега?
т.е. в xml-ке есть например тег:
<POPULARITY URL="URL" TEXT="1774" SOURCE="panel"/> - как вернуть только содержимое атрибута "TEXT" тега POPULARITY?
polusok
(Mykhailo Poliarush)
09.Январь.2013 16:06:28
#4
toxml() вернет элемент и само значение а нужно было вернуть только значение элемента в принципе, потом конечно значение выкусить там не проблема это уже дело вкус
на счет аттрибута, тут просто надо у элемента вызвать соотвествующий метод
http://docs.python.org/2/library/xml.dom.html#element-objects