我试图弄清楚如何通过SVG文件中的id访问特定元素。我使用的是lxml的python库来解析这个文件,但是它总是空的。下面是我用来访问元素的python脚本:#!/usr/bin/env python
from lxml import etree
XHTML_NAMESPACE = "http://www.w3.org/2000/svg"
XHTML = "{%s}" % XHTML_NAMESPACE
NSMAP = {None : XHTML_NAMESPACE}
root = etree.parse("temp.svg")
textid = "text1274"
path = ".//text[@id='" + textid + "']/title"
name = root.findtext(path=path, namespaces=NSMAP)
print name
结果始终是空字符串(“None”),但没有错误。它相信它找到了我想要的,但我想要的是元素文本(应该是“Wei,771-661BCE”)。以下是指控的SVG文件:
^{pr2}$
我发现可以通过删除以“xmlns=…”开头的第八行来消除错误(这是名称空间声明)。但是,由于我获得这个文件的地方的性质,我不能永久删除这一行(可能也不应该)。有没有什么方法(比如正确地指定名称空间)可以在根本不需要编辑XML的情况下获得预期的输出?在
多谢了