在xml中查找标记文本

时间:2014-05-26 22:54:18

标签: python lxml

我有以下xml:

<a:something>text-a</a:something>
  <a:otherthing>text-b</a:otherthing>

我希望分配一个<a:otherthing>文本的变量。

我尝试了txt = xml.find("a:otherthing").text,但它显示了SyntaxError: prefix 'a' not found in prefix map

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您的XML应在上面的某处声明给定前缀“a”的命名空间。

请注意,XML允许在一个文档中更改名称空间的次数几次(但不经常使用)。

然后你会发现,对于“ns:a”,有一些行“http://a.alfa.aa/a/aaa.aa”字符串,这就是所谓的完全限定名称空间。

在您的发现中,您将使用

形式的命名空间映射
nsmap = {"a": "http://a.alfa.aa/a/aaa.aa"}
xml.find("a:otherthing", namespaces=nsmap)