我在python中编辑odt文件时遇到了一些大问题。我选择了etree方式,但理解elementpath语法非常困难。 我已经看到某些地方节点中的文本也是xml中带有xpath语法的节点,但我不确定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?
选择节点的查找请求答案 0 :(得分:0)
请尝试以下代码之一:
for query in root.xpath('.//t:span[contains(text(),"#AUTEUR#")]', namespaces=nspace):
print query.text
OR
for query in root.xpath('.//t:span[text()="#AUTEUR#"]', namespaces=nspace):
print query.text