使用Python键值命名空间解析XML



我从Wordpress下载了一个XML文件,其结构如下:

<wp:postmeta>
<wp:meta_key><![CDATA[country]]></wp:meta_key>
<wp:meta_value><![CDATA[Germany]]></wp:meta_value>
</wp:postmeta>

我的目标是在XML文件中查找所有country键并打印值。我对XML库完全陌生,所以我想从这里开始了解它。

# load libraries
# importing os to handle directory functions
import os
# import XML handlers
from xml.etree import ElementTree
# importing json to handle structured data saving
import json
# dictonary with namespaces
ns = {'wp:meta_key', 'wp:meta_value'}
tree = ElementTree.parse('/var/www/python/file.xml')
root = tree.getroot()
# item
for item in root.findall('wp:post_meta', ns):
print '- ', item.text
print "Finished running"

这给我带来了一个关于使用wp作为命名空间的错误,但我不确定从哪里开始——文档对我来说不清楚。任何帮助都将不胜感激。落选者请告诉我如何改进我的问题。

我不知道XML,但我可以把它当作这样的字符串。

from simplified_scrapy import SimplifiedDoc, req, utils
xml = '''
<wp:postmeta>
<wp:meta_key><![CDATA[country]]></wp:meta_key>
<wp:meta_value><![CDATA[Germany]]></wp:meta_value>
</wp:postmeta>
'''
doc = SimplifiedDoc(xml)
kvs = doc.select('wp:postmeta').selects('wp:meta_key|wp:meta_value').html
print (kvs)

结果:

['<![CDATA[country]]>', '<![CDATA[Germany]]>']

最新更新