使用python转义xml文件中的字符

Jér*_*eot 7 python xml lxml beautifulsoup special-characters

我需要在一个丑陋的XML文件中转义特殊字符(5000行左右).这是我必须处理的XML的一个例子:

<root>
 <element>
  <name>name & surname</name>
  <mail>name@name.org</mail>
 </element>
</root>
Run Code Online (Sandbox Code Playgroud)

这里的问题是名称中的字符"&".你会如何使用Python库来逃避这样的特殊字符?我没有找到使用 BeautifulSoup的方法.

jfs*_*jfs 9

如果您不关心xml中的无效字符,可以使用XML解析器recover选项(请参阅使用lxml.etree.iterparse解析损坏的XML):

from lxml import etree

parser = etree.XMLParser(recover=True) # recover from bad characters.
root = etree.fromstring(broken_xml, parser=parser)
print etree.tostring(root)
Run Code Online (Sandbox Code Playgroud)

产量

<root>
<element>
<name>name  surname</name>
<mail>name@name.org</mail>
</element>
</root>
Run Code Online (Sandbox Code Playgroud)

  • 最后我使用了lxml.html.soupparser的解析方法:它可以解析我丑陋的xml而不用哭:)谢谢你的回答 (2认同)
  • 这个答案虽然有用,但不会转义未转义的字符。它显然会简单地丢弃它们。 (2认同)