如何转换<进入<在lxml中,Python?

时间:2013-02-02 06:42:29

标签: python lxml

有一个xml文件:

<body>
    <entry>
         I go to <hw>to</hw> to school.
    </entry>
</body>

出于某种原因,在使用lxml解析器解析之前,我将<hw>更改为&lt;hw&gt;并将</hw>更改为&lt;/hw&gt;

<body>
    <entry>
         I go to &lt;hw&gt;to&lt;/hw&gt; to school.
    </entry>
</body>

但是在修改解析的xml数据之后,我希望获得<hw>元素,而不是&lt;hw&gt;。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

首先找到unescape函数:

from xml.sax.saxutils import unescape

entry=body[0]

unescape并将其替换为原始版本:

body.replace(entry, e.fromstring(unescape(e.tounicode(entry))))

答案 1 :(得分:1)

如果你知道哪个元素包含错误的转义元素:

# parse whole document as usual..
# find the entry element..
# parse the fragment
fragment = lxml.fromstring(entry.text)
# (optionally) add the fragment to the tree
entry.text = None
entry.append(fragment)