DBLP数据集XML使用python SAX解析 作者名字显示错误问题
问题描述
最近在做实验时处理DBLP XML数据集时,作者名字部分显示不全,比如一些带有特殊符号的作者Michael H. Böhlen解析完后就会变成Michael H. Böhlen。这样会导致一系列的问题,比如解析出来的作者数目比原来的少,原先不同名的作者解析后可能变成同名等等。
解决方法
参考链接:https://blog.csdn.net/wisemanchen/article/details/109140755
之所以出现这个问题是因为dblp数据集中许多作者的名字里面含有阿拉伯文等特殊字符,在xml文件中显示为&xxxl; 具体是作为外部实体定义在“dblp.dtd”文件中,要想正确解析外部实体,需要额外用到class xml.sax.handler.EntityResolver中提供的EntityResolver.resolveEntity(publicId, systemId)函数。另外,setFeature(feature_external_ges, True)这个设置可能也会有影响。
1. 首先引入包
from xml.sax.handler import feature_external_ges
2. 在自定义的handle类中使用解析外部实体的函数 resolveEntity(publicId, systemId) 函数
class authorHandler(xml.sax.ContentHandler): # extract all authorsdef __init__(self):# your code heredef resolveEntity(self, publicID, systemID):print("TestHandler.resolveEntity(): %s %s" % (publicID, systemID))return systemIDdef startElement(self, tag, attributes):# your code heredef endElement(self, tag):# your code heredef characters(self, content):# your code here
3. 在最后xml parser配置时加上 setFeature(feature_external_ges, True) 这句配置。
# set xml parser
parser = xml.sax.make_parser()
parser.setFeature(xml.sax.handler.feature_namespaces, 0) #only need to add this row in your project
parser.setFeature(feature_external_ges, True)
handler1 = authorHandler()
parser.setContentHandler(handler1)
parser.parse('./dblp-2021-03-01.xml')
DBLP数据集XML使用python SAX解析 作者名字显示错误问题相关推荐
- Java:XML之JavaSE SAX解析
XML之JavaSE SAX解析 概述 SAX(Simple API For XML)是一个公共的基于事件的XML文档解析标准,能够通过一个简单的.快速的方法来对XML文档进行处理,和DOM相比它所占 ...
- 对xml文件的sax解析(增删改查)之一
crud(增删改查): c:creat r:retrieve u:update d:delete 以下笔记来自于韩顺平老师的讲解. 现在是用java来操作. 第一步:新建java工程.file-new ...
- android用sax解析xml,Android:采用SAX解析XML实例
接着之前的部分现在要编写代码解析如下的person.xml文件 liming 30 xiaohong 25 程序结构图如下 person类用于保存信息 SAXPersonService负责解析 pac ...
- 第二十四天学Python:文件(3)XML格式文件的建立,用SAX解析
尽管北方的春天比南方要晚很多,尽管这里经历两次气温骤降,尽管过程起伏跌宕,但是春天的脚步不会有丝毫地停顿,阵阵花香终会飘入房中. 该来的总会来的. /doge 没啥,就是感慨一下苦等许久的春天终于来了 ...
- JavaWeb-05 XML基础(Dom解析和Sax解析)
JavaWeb-05 JavaWeb-XML基础(Dom解析和Sax解析) 一.XML的概述(了解) eXtensible Markup Language 可扩展标记语言 宗旨是传输数据,而非显示数据 ...
- XML解析(一),SAX解析XML
转载自 XML解析(一),SAX解析XML 一.概述 SAX,全称Simple API for XML,是一种以事件驱动的XMl API,是XML解析的一种新的替代方法,解析XML常用的还有DOM ...
- 详解SAX解析XML
SAX,全称 Simple API for XML,是一种以事件驱动的 XMl API,即XML 简单应用程序接口.解析 XML 元素名称和内容的关键是当 SAX 解析 XML 时,把元素的名称和内容 ...
- Python解析DBLP的xml文件
DBLP是一个应用广泛的科研论文数据集,发布形式为xml格式.地址为http://dblp.org/xml/. 使用Python语言编程提取数据集中的如下信息: Author,Title,Journa ...
- python 使用sax 解析xml 文件
这里不是说xml 的所以如果xml 不了解,可以百度大致看下即可, SAX知识了解 SAX (simple API for XML ) 有解析器和事件处理器 解析器负责读取XML文档,并向事件处理器 ...
最新文章
- Couldn't start MySQL! while starting XAMPP
- java urlrewriter_java url重写技术(UrlReWriter)
- python 自定义词典_pyhanlp用户自定义词典添加
- 辽宁交通高等专科学校有计算机专业吗,辽宁省交通高等专科学校可以转专业吗,辽宁省交通高等专科学校新生转专业政策...
- (七)nodejs循序渐进-模块系统(进阶篇)
- LeetCode 1379. 找出克隆二叉树中的相同节点(二叉树遍历)
- 从谷歌浏览器复制不带样式_文字特效游戏海报特效字体photoshop字体图层样式
- 一款基于SpringBoot + Spring Security的后台管理系统,强烈推荐,直接用
- 当你发现自己U盘里文件夹有了“.exe”后缀该怎么办
- 手机修改html离线网页内容,HTML5--离线web应用
- 海信电视一直处在Android,【干货收藏】海信电视免root精简教程,去除自带无用软件,替换桌面可实现开机自启动...
- 用直接分解法求方程组的C语言程序,LU分解法解线性方程组(C语言)
- html转换opml,asp.net下URL网址重写成.html格式、RSS、OPML的知识总结
- Excel导入导出之easypoi用法
- 蓝桥杯试题 算法训练 Have You Ever Heard About the Word?
- 自己动手打造深度学习服务器
- k3595参数_常用三极管参数指标
- [USACO Mar08] 游荡的奶牛
- iOS 10适配须知
- [翻译 3GPP 38.321] 5.1.1随机接入流程初始化