【发布时间】:2018-05-01 09:40:15
【问题描述】:
给定以下 XML(片段):
<node id="b071f9fa-14b0-4217-8e97-eb41da73f598" type="Group" ext:score="90">
<node id="b071f9fa-14b0-4217-8e97-eb41da73f599" type="Person" ext:score="100">
<node id="b071f9fa-14b0-4217-8e97-eb41da73f600" type="Business" ext:score="80">
我想检索 ext:score 为 100 的节点的 id。
当前代码:
match = dom.xpath('//node[@ext:score="100"]/@id')[0]
返回异常:
lxml.etree.XPathEvalError: Undefined namespace prefix
我已阅读(此处和 XPath 文档中)ext 首先需要定义为有效的命名空间,因为如果 DOM 包含 特殊 字符,则无法将其解析为属性.但是,我一直找不到一个很好的例子来说明如何做到这一点。我正在处理的摘录中没有ext 的定义,我不确定如何创建命名空间prefix。
有什么想法吗?
【问题讨论】:
-
我已经阅读了@kjhughes,并且我了解如何创建 命名空间,但我不知道如何使用该命名空间前缀来测试健康)状况。还在寻找...谢谢!
-
您的 XML 是否有
ext的命名空间声明——类似于xmlns:ext="http://example.com/extention"在node元素上方的元素上? -
@kjhughes - 我没有(这些来找我原样,)但有人告诉我原件包含这个:
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#" xmlns:ext="http://musicbrainz.org/ns/ext#-2.0" created="2017-11-16T12:09:30.334Z">这是什么我曾经尝试synthesize前缀。