注意:该异常发生也可以是其他XML解析器,这里以XStream为例。


使用XStream解析xml文件的时候抛出异常:


: org.xml.sax.SAXParseException;将功能 “http://apache.org/xml/features/disallow-doctype-decl” 设置为“真”时, 不允许使用 DOCTYPE。

Caused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 10; 将功能 "http://apache.org/xml/features/disallow-doctype-decl" 设置为“真”时, 不允许使用 DOCTYPE。at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:108)

"http://apache.org/xml/features/disallow-doctype-decl"设为true

目的是为了禁用xml中的inline DOCTYPE 声明,说白了就是禁用DTD,不允许将外部实体包含在传入的 XML 文档中,从而防止XML实体注入(XML External Entities 攻击,利用能够在处理时动态构建文档的 XML 功能,注入外部实体)。

为了避免XXE injections,应为XML代理、解析器或读取器设置下面的属性:

factory.setFeature("http://xml.org/sax/features/external-general-entities",false);
factory.setFeature("http://xml.org/sax/features/external-parameter-entities",false);

如果根本不需要 inline DOCTYPE 声明,可直接使用以下属性将其完全禁用

factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl",true);

你可能使用的是下面这种方式创建XStream实例,而DomDriver默认禁用了DTD,或者是别的什么xxxDriver,如果出现了该异常,都是默认禁用了DTD,例如:

XStream xstream=new XStream(new DomDriver());//DomDriver默认不支持DTD

你可以使用XppDriver,Xpp3Driver,XppDomDriver等等,默认支持DTD的驱动器来构造实力。

XStream xstream=new XStream();//默认是 new XppDriver()
XStream xstream=new XStream(new Xpp3Driver());

解决方案(二)— 将 http://apache.org/xml/features/disallow-doctype-decl 设置为“true”时, 不允许使用 DOCTYPE相关推荐

  1. spring boot 中 log4j2 日志无法加载(Feature 'http://apache.org/xml/features/xinclude' is not recognized.)

    Spring boot 1.5.14 版本中使用 log4j2 日志,在 eclipse 中可以打印日志,但是打包成 war 后,直接运行无法将日志输出到日志文件,配置的 log4j2-spring. ...

  2. 大讲台谈Hive常见的问题及解决方案(二)

    大讲台谈Hive常见的问题及解决方案(二) 本文中所涉及到的问题均来自大讲台Hadoop学员的提问,下面是具体问题描述及解决方案,希望对正在学hadoop的学子有所帮助 问题1:hive 中如何处理外 ...

  3. SOAP协议(二):Apache SOAP介绍

    (仙人掌工作室 2001年09月21日 14:53) width="360" scrolling="no" height="300" fra ...

  4. 2021年大数据HBase(十二):Apache Phoenix 二级索引

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Apache Phoenix 二级索引 一.索引分类 ...

  5. Tomcat(二):tomcat配置文件server.xml详解和部署简介

    1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可 ...

  6. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十二)脚本更新3.1

    目录 Web安全--易班优课YOOC课群在线测试自动答题解决方案 更新日志 1.实现简单课程视频立刻完成: 2.集成禁止打开控制台解决方案: 3.修复因易班更新导致的一些问题: 4.添加自动刷题时答案 ...

  7. XML解析(二),DOM解析XML

    转载自   XML解析(二),DOM解析XML 上篇文章向大家介绍了SAX解析XML,为了这篇文章理解起来更加方便,所以还没看过SAX解析XML文章的,请戳这[XML解析(一)]SAX解析XML ,这 ...

  8. 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(二):Apache安装和配置

    基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...

  9. 【解决方案 二】---设置mysql5.7编码集为utf8mb4

    [解决方案 二]---设置mysql5.7编码集为utf8mb4 参考文章: (1)[解决方案 二]---设置mysql5.7编码集为utf8mb4 (2)https://www.cnblogs.co ...

最新文章

  1. Opencv实战 | 用摄像头自动化跟踪特定颜色物体
  2. UIButton 按钮控件-IOS开发 (实例)
  3. JAVA作业 02 JAVA语法基础
  4. 1056. Mice and Rice (25)
  5. scala mysql连接池_Java与Scala的两种简易版连接池
  6. 信息学奥赛一本通 1129:统计数字字符个数 | OpenJudge NOI 1.7 01
  7. oracle数据库赋权_oracle数据库删除赋权
  8. 一起来玩树莓派--在docker内安装conda(python3.6)
  9. golang日志收集方案之ELK
  10. IT项目建议书及可行性研究报告撰写格式
  11. Android Studio 学生课程签到系统
  12. Cannot resolve com.oracle:ojdbc14:11.2.0.1.0
  13. JS项目(制作随机选号页面)
  14. kubeadm部署单Master节点kubernetes集群 1.21.0
  15. 【快应用】十大手机厂商共推快应用标准
  16. python中英文对齐_Python中英文对齐终极解决方案
  17. 支付宝小程序登录PHP
  18. 基于大型数字视频监控系统解决方案
  19. opencv函数测试对话框
  20. python卡方检验关键词,Python卡方检验

热门文章

  1. [转载] 七龙珠第一部——第008话 龟仙人的龟派气功波
  2. matlab距离平方和公式推导,lstopt 非线性拟合:相关系数之平方(R^2)和决定系数(DC)计算公式是?...
  3. html 在图片添加叉号,html5 表单输入时有个小叉号是怎么做的
  4. 跟我学Spring3-开涛-笔记
  5. 仓库管理系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. 无法访问/opt/module/spark/jars/spa
  7. Android Studio报错——The device might have stale dexed jars that don‘t match the current version
  8. yii mysql gii_Yii整合mongodb和mysql 使用mongodb gii
  9. 写给这批≥30岁的测试工程师 。
  10. java利用poi导出excel功能-附带图片导出