使用Python的命名空间URI无效';s lxml

使用Python的命名空间URI无效';s lxml,python,namespaces,lxml,Python,Namespaces,Lxml,我有一个用于访问在线API(Google Search Appliance)的脚本,它需要发布特定的xml格式。我已经使用lxml构建了一个xml文档,但我的问题是,在尝试创建根节点时,我得到了一个ValueError:Invalid namespace URI异常。以下是完整的示例: gsa_ns="http://schemas.google.com/gsa/2007" default_ns="http://www.w3.org/2005/Atom" gsa="{%s}"%gsa_ns de

我有一个用于访问在线API(Google Search Appliance)的脚本,它需要发布特定的xml格式。我已经使用lxml构建了一个xml文档,但我的问题是,在尝试创建根节点时,我得到了一个
ValueError:Invalid namespace URI
异常。以下是完整的示例:

gsa_ns="http://schemas.google.com/gsa/2007"
default_ns="http://www.w3.org/2005/Atom"

gsa="{%s}"%gsa_ns
default="{%s}"%default_ns

nsmap={None:default, "gsa":gsa}

entry=et.Element(default+"entry",nsmap=nsmap)
引发的异常如下所示:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lxml.etree.pyx", line 2557, in lxml.etree.Element (src/lxml/lxml.etree.c:50983)
  File "apihelpers.pxi", line 156, in lxml.etree._makeElement (src/lxml/lxml.etree.c:12231)
  File "apihelpers.pxi", line 143, in lxml.etree._makeElement (src/lxml/lxml.etree.c:12097)
  File "apihelpers.pxi", line 257, in lxml.etree._initNodeNamespaces (src/lxml/lxml.etree.c:13125)
  File "apihelpers.pxi", line 1567, in lxml.etree._uriValidOrRaise (src/lxml/lxml.etree.c:24339)
ValueError: Invalid namespace URI u'{http://schemas.googls.com/gsa/2007}'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
lxml.etree.Element(src/lxml/lxml.etree.c:50983)中的文件“lxml.etree.pyx”,第2557行
文件“apihelpers.pxi”,第156行,在lxml.etree.\u makeElement(src/lxml/lxml.etree.c:12231)中
文件“apihelpers.pxi”,第143行,在lxml.etree.\u makeElement(src/lxml/lxml.etree.c:12097)中
文件“apihelpers.pxi”,第257行,位于lxml.etree.\u initNodeNamespaces(src/lxml/lxml.etree.c:13125)
文件“apihelpers.pxi”,第1567行,位于lxml.etree.\u uriValidOrRaise(src/lxml/lxml.etree.c:24339)
ValueError:无效的命名空间URI u'{http://schemas.googls.com/gsa/2007}'

有人能解释一下这是什么意思吗?我支持http代理,但我不认为这是一个问题,因为当我删除GSA名称空间并只保留w3.org名称空间时,我没有得到例外。

解析器从不查找名称空间的URI,不管您是否支持代理。但是lxml2.3中的解析器检查它们是否是有效的uri。应该如此

nsmap = {None: default_ns, "gsa": gsa_ns}