1

我正在尝试解析 ODF 文件中的 content.xml。我已将文件读入字符串,并且我有一个带有 lxml.etree 的树对象:

树 = etree.XML(字符串)

但现在我需要找到 text:a 或 text:h 的每个子元素。我在上一个问题中被告知我可以使用 XPath。我试过但每次都卡住了。甚至找不到这些元素之一。

如果我尝试:

elem = tree.xpath('//text:p')
我只是得到一个
XPathEvalError:未定义的命名空间前缀

那么如何以正确的顺序获得包含这两个子元素的列表,以便我可以遍历它们?

4

1 回答 1

1

这是因为text是一个命名空间缩写,在ODF 模式中定义。尝试

tree.xpath('//text:a | //text:h',
           namespaces={'text': 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'})

|是集合并集运算符。另请参阅LXML 文档

于 2011-09-14T20:39:57.233 回答