提问人:Ahmed Basem 提问时间:12/9/2022 更新时间:12/9/2022 访问量:243
如何在python SAX解析器中转义XML特殊字符?
How to escape XML special characters in python SAX parser?
问:
我正在尝试解析一个大型 XML 文档并仅提取标签内容。<Text>
XML 文档:
<?xml version="1.0" encoding="UTF-8"?>
<EchoroukonlineData>
<Echoroukonline>
<ID>SHG_ARB_0000001</ID>
<URL>http://www.echoroukonline.com/ara/articles/1.html</URL>
<Headline>title</Headline>
<Dateline>2008/02/22</Dateline>
<Text>Text that should be parsed <!--><li><p><--></Text>
</Echoroukonline>
</EchoroukonlineData>
我正在使用 SAX 解析器来执行此任务,如下所示:
import xml.sax
import pandas as pd
from xml.sax.saxutils import escape
articles = []
class articlesHandler(xml.sax.ContentHandler):
def startElement(self, name, attrs):
self.current = name
def characters(self, content):
if self.current == "Text":
self.Text = content
def endElement(self, name):
if self.current == "Text":
text=self.Text
articles.append(text)
handler = articlesHandler()
parser = xml.sax.make_parser()
parser.setContentHandler(handler)
parser.parse('dataset.xml')
问题是标签包含XML特殊字符,如<,>,我想忽略这些特殊字符。
有一个函数可以转义特殊字符。
我在函数中使用它如下:<Text>
xml.sax.saxutils.escape(data)
characters()
def characters(self, content):
if self.current == "Text":
self.Text = escape(content)
但它仍然不起作用。
错误消息:xml.sax._exceptions.SAXParseException: dataset.xml:8:1756: not well-formed (invalid token)
答:
0赞
Anjani Gourisaria
12/9/2022
#1
def characters(self, content):
if self.current == "Text":
self.Text = re.sub('[<>,]', '', content)
这将从 XML 文本中删除任何“<”、“>”或“”字符,然后再将其存储在“self.Text“变量。
评论