使用python从xml文件中提取属性和文本

时间:2014-07-01 23:30:51

标签: python python-3.x

我有一个xml文件,如下所示:

<elements>
   <topic id1=111 id2=222>
      <title>title1</title>
      <topic id1=333 id2=444>
         <title>title2</title>
      </topic>
      <topic id1=555 id2=666>
         <title>title3</title>
      </topic>
   </topic>
   <topic id1=777 id2=888>
      <title>title3</title>
   </topic>
</elements>

我需要输出标题元素中的所有文本以及所有id1和id2属性,如下所示:

[[title1,111,222],[title2,333,444],...]

我稍后会把它们放在一个csv文件中,但我知道怎么做,我完全陷入了这个问题。我看过这样的帖子one,但我似乎并没有立即从所有这些帖子中获取信息。我正在使用python 3.3以防万一。非常感谢任何想法。

谢谢!

1 个答案:

答案 0 :(得分:1)

Python 2.7.5

text = '''<elements>
   <topic id1=111 id2=222>
      <title>title1</title>
      <topic id1=333 id2=444>
         <title>title2</title>
      </topic>
      <topic id1=555 id2=666>
         <title>title3</title>
      </topic>
   </topic>
   <topic id1=777 id2=888>
      <title>title3</title>
   </topic>
</elements>'''

import BeautifulSoup as bs

results = []

soup = bs.BeautifulSoup(text)
topics = soup.findAll('topic')

for x in topics:
    e = []
    e.append(x.find('title').text)
    e.extend( a[1] for a in x.attrs )
    results.append(e)

print results

[[u'title1', u'111', u'222'], [u'title2', u'333', u'444'], [u'title3', u'555', u'666'], [u'title3', u'777', u'888']]