我喜欢ElementTree解析xml的方式,特别是Xpath功能。 我从一个应用程序中获得了嵌套标签的xml输出。
我想通过名称访问这些标签,而不需要指定命名空间,这是否可能? 例如:
root.findall("/molpro/job")
改为:
root.findall("{http://www.molpro.net/schema/molpro2006}molpro/{http://www.molpro.net/schema/molpro2006}job")
我喜欢ElementTree解析xml的方式,特别是Xpath功能。 我从一个应用程序中获得了嵌套标签的xml输出。
我想通过名称访问这些标签,而不需要指定命名空间,这是否可能? 例如:
root.findall("/molpro/job")
改为:
root.findall("{http://www.molpro.net/schema/molpro2006}molpro/{http://www.molpro.net/schema/molpro2006}job")
至少在使用lxml2时,可以在一定程度上减少这种开销:
root.findall("/n:molpro/n:job",
namespaces=dict(n="http://www.molpro.net/schema/molpro2006"))
def my_xpath(doc, ns, xp);
num = xp.count('/')
new_xp = xp.replace('/', '/{%s}')
ns_tup = (ns,) * num
doc.findall(new_xp % ns_tup)
namespace = 'http://www.molpro.net/schema/molpro2006'
my_xpath(root, namespace, '/molpro/job')
我承认这不是很有趣,但至少你将能够阅读你的xpath表达式。