LXML:KeyError:'@'-element.find('./@ attrname')

时间:2019-12-22 22:39:00

标签: python xml xpath lxml

我不知道如何,但是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">属性

您知道问题出在哪里吗?

1 个答案:

答案 0 :(得分:0)

答案很简单-我使用.find而不是.xpath

编辑:

然后,您必须使用 xpath 来获取文本:element.xpath('.//element/text())[0]