LXML空名称空间如何获取项?

2024-10-01 07:34:40 发布

您现在位置:Python中文网/ 问答频道 /正文

对于这种XML格式,我有一组XPATHS。问题是,有时它指定了名称空间

<?xml version="1.0" encoding="UTF-8"?>
<SHOP xmlns="http://www.zbozi.cz/ns/offer/1.0">
<SHOPITEM>
    <PRODUCTNAME>Crysta váza 4 CM</PRODUCTNAME>
    <DESCRIPTION><![CDATA[Český producent je vážený po celém světě

在这种情况下,我不能这样做来获取所有SHOPITEM项目:

root.xpath('//SHOPITEM')

我需要指定名称空间,然后为每个标记添加前缀

root.xpath('//g:SHOPITEM',namespaces={'g':'http://www.zbozi.cz/ns/offer/1.0'})

因为当我这样做的时候:

root.xpath('//SHOPITEM',namespaces={'':'http://www.zbozi.cz/ns/offer/1.0'})

它说:

empty namespace prefix is not supported in xpath

但我不能在所有标签前面加上“g”。有更好的方法吗?使lxml树的行为就像没有namespace一样,或者只是自动解析它


Tags: 名称httpwww空间czrootxmlnamespace