我正在使用SAX来解析大型xml文件。 但它会将每个XML code转换为它的符号版本。
如何防止SAX这种行为。
示例with_amp.xml
:
<?xml version="1.0" encoding="utf-8"?>
<root>
<title>One Two</title>
<title>One &mdash; Two</title>
</root>
python处理程序:
from xml.sax import handler, parse
class Handler(handler.ContentHandler):
def characters(self, content):
if content.isspace(): return
print(content)
if __name__ == "__main__":
parse(open('with_amp.xml', 'r'), Handler())
我希望输出为:
One Two
One &mdash; Two
答案 0 :(得分:0)
使用saxutils,我设法做到了。 https://docs.python.org/2/library/xml.sax.utils.html#module-xml.sax.saxutils
e.g。与您的信息:
print(content)
将成为
print(saxutils.escape(content))
(您需要将saxutils添加到您的导入中: 整个将是
from xml.sax import handler, parse, saxutils
class Handler(handler.ContentHandler):
def characters(self, content):
if content.isspace(): return
print(saxutils.escape(content))
if __name__ == "__main__":
parse(open('with_amp.xml', 'r'), Handler())