0

我在 python 中编辑 odt 文件时遇到了一些大问题。我选择了 etree 方式,但理解 elementpath 语法非常困难。我在某处看到节点中的文本也是具有 xpath 语法的 xml 中的节点,但我不确定 elementpath 将其视为节点......好吧,我迷路了......

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

import StringIO
from lxml import etree
xmldata = '''\
<?xml version="1.0" encoding="UTF-8"?>
<document-content xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" >
<text:span text:style-name="T2">water is good</text:span>
<text:span text:style-name="T3">#QUALITE#</text:span>
<text:span text:style-name="T2">#AUTEUR#</text:span>
<text:span text:style-name="T2">#QUALITE#</text:span>
<text:span text:style-name="T4">#AUTEUR#</text:span>
<text:p text:style-name="P14"></text:p>
</document-content>
'''

fakefile = StringIO.StringIO(xmldata)
root = etree.parse(fakefile).getroot()
fakefile.close()
nspace = {}
nspace["t"] = "urn:oasis:names:tc:opendocument:xmlns:text:1.0"
query = root.find('.//t:span[@t:style-name="T2"]', nspace)
print query.text

如何使用 #AUTEUR# text 修改用于选择节点的查找请求?

4

1 回答 1

0

尝试以下代码之一:

for query in root.xpath('.//t:span[contains(text(),"#AUTEUR#")]', namespaces=nspace):
    print query.text

或者

for query in root.xpath('.//t:span[text()="#AUTEUR#"]', namespaces=nspace):
    print query.text
于 2013-06-17T02:53:44.573 回答