我正在尝试使用lxml
. 这是我的代码:
nsmap = {
'svg': 'http://www.w3.org/2000/svg',
'xlink': 'http://www.w3.org/1999/xlink',
}
root = etree.XML(svg)
# this works (finds the element with the given ID)
root.xpath('./svg:g/svg:g/svg:g[@id="route_1_edge"]', namespaces=nsmap)
# this yields "XPathEvalError: Invalid expression"
root.xpath('./svg:g/svg:g/svg:g[fn:startswith(@id,"route_1")]', namespaces=nsmap)
有人知道为什么第一个有效而第二个无效吗?如果我将第三个更改svg:g
为svg:text
我没有得到异常,那么它似乎与g
元素有关,特别是它不喜欢的元素,但是,再次,简单的g[@id="foo"]
搜索工作正常。