我不知道如何,但是element.find('./@attrname')
筹集了KeyError: '@'
代码
import lxml.etree as ET
with open(self.filepaths[0]) as f:
root = ET.parse(f)
root = root.getroot()
namespaces = {'xmlns': 'http://www.iai-shop.com/developers/iof/extensions.phtml',
"xml": "http://www.w3.org/XML/1998/namespace"}
items = root.findall('.//product', namespaces)
for item in items:
name = item.find('./description/short_desc[@xml:lang="pol"]', namespaces).text
try:
desc = item.find('./description/long_desc[@lang="pol"]', namespaces).text
except AttributeError:
desc = None
code = item.find('./@code_on_card',namespaces)
我正在尝试从code_on_card
获取<product type="xxx" id="xxx" vat="23.0" code_on_card="xxx">
属性
您知道问题出在哪里吗?
答案 0 :(得分:0)
答案很简单-我使用.find
而不是.xpath
。
编辑:
然后,您必须使用 xpath 来获取文本:element.xpath('.//element/text())[0]