问题描述

最近在做实验时处理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解析 作者名字显示错误问题相关推荐

  1. Java:XML之JavaSE SAX解析

    XML之JavaSE SAX解析 概述 SAX(Simple API For XML)是一个公共的基于事件的XML文档解析标准,能够通过一个简单的.快速的方法来对XML文档进行处理,和DOM相比它所占 ...

  2. 对xml文件的sax解析(增删改查)之一

    crud(增删改查): c:creat r:retrieve u:update d:delete 以下笔记来自于韩顺平老师的讲解. 现在是用java来操作. 第一步:新建java工程.file-new ...

  3. android用sax解析xml,Android:采用SAX解析XML实例

    接着之前的部分现在要编写代码解析如下的person.xml文件 liming 30 xiaohong 25 程序结构图如下 person类用于保存信息 SAXPersonService负责解析 pac ...

  4. 第二十四天学Python:文件(3)XML格式文件的建立,用SAX解析

    尽管北方的春天比南方要晚很多,尽管这里经历两次气温骤降,尽管过程起伏跌宕,但是春天的脚步不会有丝毫地停顿,阵阵花香终会飘入房中. 该来的总会来的. /doge 没啥,就是感慨一下苦等许久的春天终于来了 ...

  5. JavaWeb-05 XML基础(Dom解析和Sax解析)

    JavaWeb-05 JavaWeb-XML基础(Dom解析和Sax解析) 一.XML的概述(了解) eXtensible Markup Language 可扩展标记语言 宗旨是传输数据,而非显示数据 ...

  6. XML解析(一),SAX解析XML

    转载自  XML解析(一),SAX解析XML 一.概述  SAX,全称Simple API for XML,是一种以事件驱动的XMl API,是XML解析的一种新的替代方法,解析XML常用的还有DOM ...

  7. 详解SAX解析XML

    SAX,全称 Simple API for XML,是一种以事件驱动的 XMl API,即XML 简单应用程序接口.解析 XML 元素名称和内容的关键是当 SAX 解析 XML 时,把元素的名称和内容 ...

  8. Python解析DBLP的xml文件

    DBLP是一个应用广泛的科研论文数据集,发布形式为xml格式.地址为http://dblp.org/xml/. 使用Python语言编程提取数据集中的如下信息: Author,Title,Journa ...

  9. python 使用sax 解析xml 文件

    这里不是说xml 的所以如果xml 不了解,可以百度大致看下即可, SAX知识了解 SAX (simple API for XML )  有解析器和事件处理器 解析器负责读取XML文档,并向事件处理器 ...

最新文章

  1. Couldn't start MySQL! while starting XAMPP
  2. java urlrewriter_java url重写技术(UrlReWriter)
  3. python 自定义词典_pyhanlp用户自定义词典添加
  4. 辽宁交通高等专科学校有计算机专业吗,辽宁省交通高等专科学校可以转专业吗,辽宁省交通高等专科学校新生转专业政策...
  5. (七)nodejs循序渐进-模块系统(进阶篇)
  6. LeetCode 1379. 找出克隆二叉树中的相同节点(二叉树遍历)
  7. 从谷歌浏览器复制不带样式_文字特效游戏海报特效字体photoshop字体图层样式
  8. 一款基于SpringBoot + Spring Security的后台管理系统,强烈推荐,直接用
  9. 当你发现自己U盘里文件夹有了“.exe”后缀该怎么办
  10. 手机修改html离线网页内容,HTML5--离线web应用
  11. 海信电视一直处在Android,【干货收藏】海信电视免root精简教程,去除自带无用软件,替换桌面可实现开机自启动...
  12. 用直接分解法求方程组的C语言程序,LU分解法解线性方程组(C语言)
  13. html转换opml,asp.net下URL网址重写成.html格式、RSS、OPML的知识总结
  14. Excel导入导出之easypoi用法
  15. 蓝桥杯试题 算法训练 Have You Ever Heard About the Word?
  16. 自己动手打造深度学习服务器
  17. k3595参数_常用三极管参数指标
  18. [USACO Mar08] 游荡的奶牛
  19. iOS 10适配须知
  20. [翻译 3GPP 38.321] 5.1.1随机接入流程初始化

热门文章

  1. 多个wifi路由器组建一个wifi网络增加网络覆盖范围
  2. 《痛点:挖掘小数据满足用户需求》
  3. QT多线程同步之QWaitcondition
  4. 前端开发第三方分享/登录功能备忘(facebook、weibo、QQ、weixin微信好友或者朋友圈)
  5. DB2DIAG 命令学习
  6. matlab的diag函数
  7. linux新下载的源码或者官方提供的内核查看具体的内核版本
  8. 图解|什么是缓存系统三座大山
  9. pyspark- ml-features
  10. The Devil Wears Prada-10