私はこの問題を盲目的に見つめてきました。
XML でカプセル化された HTML データを Atlassian Confluence にフィードしています。-tags の場合、span-tag を追加する必要があります。しかし、どのように試しても、lxml-lib は < と > をそれぞれ < と > に変換します。ただし、変換は新しいタグのみを対象としており、 内の既存のタグはそのままの状態で取得されます。
この Python コードを見てください。
for x in doc.iter():
if x.tag == "td":
print x.text
x.text = "no tags"
print etree.dump(x)
x.text = "<span>one tag</span>"
print etree.dump(x)
この入力の場合:
<tr>
<td>apa</td>
<td>1.2</td>
<td>
<a href="http://korv.com/apa.tar.gz">3.4</a>
</td>
<td>no</td>
</tr>
<tr>
<td>coreutils</td>
<td>6.12</td>
<td>
<a href="http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz">8.21</a>
</td>
<td>no</td>
</tr>
これは出力です:
<td>no tags</td>None
<td><span>one tag</span></td>None
1.2
<td>no tags</td>None
<td><span>one tag</span></td>None
None
<td>no tags<a href="http://korv.com/apa.tar.gz">3.4</a></td>None
<td><span>one tag</span><a href="http://korv.com/apa.tar.gz">3.4</a></td>None
no
<td>no tags</td>None
<td><span>one tag</span></td>None
coreutils
<td>no tags</td>None
<td><span>one tag</span></td>None
6.12
<td>no tags</td>None
<td><span>one tag</span></td>None
None
<td>no tags<a href="http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz">8.21</a></td>None
<td><span>one tag</span><a href="http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz">8.21</a></td>None
no
<td>no tags</td>None
<td><span>one tag</span></td>None
ご覧のとおり、 my が変換されている間、タグ内は変更されていません。このエラーを把握できません。
既存のテキストは変更されていないのに、テキストの変換が行われるのはなぜですか?