2013-02-02 29 views
3

有一个XML文件:如何将<转换为<in lxml,Python?

<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;。我怎样才能做到这一点?

+0

考虑这个回答http://stackoverflow.com/questions/2087370/decode-html-entities-in-python-string –

回答

3

首先找到一个unescape功能:

from xml.sax.saxutils import unescape 

entry=body[0] 

UNESCAPE,并与原有的替换:

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

'entry.text'已经转义。没有'unescape()'是必要的 – jfs

+0

最后,我可以让我的代码做我需要它做的事情,而不是被迫解决什么lxml库认为我需要。谢谢。 – Logic1

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) 
相关问题