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# テキストでノードを選択するための検索条件を変更するにはどうすればよいですか?

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 に答える