Форум сайта python.su
Всем доброго времени суток. Решил поиграть с документами ворда и опенврайтера в формате xml и вот… барабанная дробь :) столкнулся с трудностями ) Привожу в качестве примера xml код:
<?xml version='1.0'?>
<g:start xmlns:a="123" xmlns:g="432">
<a:f>efsfdd</a:f>
<a:f>f5</a:f>
<a:f>2</a:f>
<a:f>66</a:f>
</g:start>
from lxml import etree
import StringIO, lxml.sax
from xml.dom.pulldom import SAX2DOM
fp = open('321.xml').readlines()
s = ''
for i in xrange(len(fp)):
s += fp[i]
s = s.decode('cp1251')
buf = StringIO.StringIO(s)
three = etree.parse(buf)
handler = SAX2DOM()
lxml.sax.saxify(three,handler)
dom = handler.document
print dom.getElementsByTagName('a:f')
Офлайн
Вопрос решён вот так
from lxml import etree
import StringIO
fp = open('321.xml').readlines()
s = ''
for i in xrange(len(fp)):
s += fp[i]
s = s.decode('cp1251')
buf = StringIO.StringIO(s)
three = etree.parse(buf)
k = ['g','a']
val = ['432', '123']
r = three.xpath('/g:start/a:f', namespaces={k[0] : val[0], k[1] : val[1] })
for i in xrange(len(r)):
print r[i].text
Офлайн