我在 Eclipse 中使用 Python 3.3 和 Windows 7 上的 PyDev 插件。
我需要使用 XPath 和 LXML 解析 XML 文件。如果我使用静态 XPath 表达式,它可以工作,但我需要使用一个变量,但是当我在表达式中使用变量时,它不起作用。
如果我使用此代码:
xml = etree.parse(fullpath).getroot()
tree = etree.ElementTree(xml)
nsmap = {'xis' : 'http://www.xchanging.com/ACORD4ALLEDI/1',
'ns' : 'http://www.ACORD.org/standards/Jv-Ins-Reinsurance/1' }
p = tree.xpath('//xis:Line', namespaces=nsmap)
print (p)
for e in p:
print(e.tag, e.text)
它按我的意愿工作,print(p)
回报
[<Element {http://www.xchanging.com/ACORD4ALLEDI/1}LloydsProcessingCode at 0x2730350>]
但如果我将其更改为:
xml = etree.parse(fullpath).getroot()
tree = etree.ElementTree(xml)
nsmap = {'xis' : 'http://www.xchanging.com/ACORD4ALLEDI/1',
'ns' : 'http://www.ACORD.org/standards/Jv-Ins-Reinsurance/1' }
header = 'Jv-Ins-Reinsurance'
ns = 'xis:'
path = "'//" + ns + header + "'"
p = tree.xpath('%s' % path, namespaces=nsmap)
print ('p = %s' % p)
for e in p:
print(e.tag, e.text)
print(p)
回报:
p = //xis:Jv-Ins-Reinsurance
我得到一个错误:AttributeError: 'str' object has no attribute 'tag'
。
我怎样才能做到这一点?
谢谢