dom4j解析xml-取消doctype中DTD验证设置

在编写用dom4j解析iBatis的sqlmap文件时,抛出以下异常信息:

 

org.dom4j.DocumentException: ibatis.apache.org Nested exception: ibatis.apache.org
at org.dom4j.io.SAXReader.read(SAXReader.java:484)
at org.dom4j.io.SAXReader.read(SAXReader.java:264)

...

Nested exception:
java.net.UnknownHostException: ibatis.apache.org
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:264)

...

Nested exception: java.net.UnknownHostException: ibatis.apache.org
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:264)
 

粗体标注的是异常的关键信息,看到此问题相信很多朋友都知道是因为下载doctype中的dtd对xml进行验证时,网络不通所致,sqlmap中doctype定义如下:

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">

 

但实际情况是很多时候程序运行的环境网络不一定和互联网是通的,而且像这样每次联网去下载dtd也会对程序的效率产生影响.于是,出现两种解决办法:

1、去掉xml文件中的doctype或者将doctype中指定的互联网dtd文件改为引用本地dtd文件

2、对dom4j的SAXReader进行设置,不去下载外部dtd文件来对xml进行验证

相信大部分同仁都不大会同意第一种办法,呵呵,我也不太赞同。于是开始寻找第二种方案的解决办法:

reader.setValidation(false);
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

 

两行代码解决问题,关键是第二行

 

参考文章:http://blog.youkuaiyun.com/youlianying/archive/2010/09/26/5908335.aspx

RK3588零拷贝视频流水线实战:用GStreamer+Mpp实现8K硬解与DRM显示 本文深入探讨了在RK3588平台上构建零拷贝视频流水线的工程实践。通过结合GStreamer与MPP,实现了从8K视频硬解到DRM显示的全流程硬件加速,有效解决了高分辨率视频处理中的DDR带宽瓶颈问题。文章详细解析了dma-buf数据流机制、管道构建与性能优化策略,为多路视频并发处理提供了高效的系统架构解决方案。 阅读详情

相关推荐

帆软 finereport FCRA 考试 题库+答案,共收录561题,大部分有答案

帆软 finereport FCRA 考试 题库+答案,共收录561题,大部分有答案 入门基础 11.多选题 以下方式中属于FineReport中预览模式的有( ) 分页预览、填报预览、新填报预览、数据分析、移动端预览 16.判断题 FineReport报表工具必须购买激活码后才能使用。 错误,可以免费获取激活码。 29.单选题 FineReport是一款利用( )语言开发的报表工具。java 41.多选题 访问帮助文档的方式有哪些?设计器中社区菜单下-帮助文档;直接访问http://help.finere

qq_37485720的博客 2万+

Dom4j取消下载验证DTD文件

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33726318的博客 161

别再只盯着MES了!半导体/面板厂CIM系统全家桶(EAP/YMS/SPC)保姆级入门指南

本文深入解析半导体制造中的CIM系统,涵盖EAP、YMS和SPC等关键子系统的协同工作。通过实战案例和技术细节,展示如何利用CIM系统提升生产效率、良率管理和设备维护,为半导体/面板厂提供全面的实施指南和优化策略。

weixin_33693070的博客 462

使用XmlDocument类加载XML文件时如何忽略DTD验证

错误提示:System.Xml.XmlException:未找到所需的 DTD 标记。 行 2,位置 3。 这是因为要载入的xml文件有外部的DTD验证,解决办法就是不去加载外部资源。 1 XmlDocument xml= new XmlDocum

大龄程序员 3057

C#调用Halcon程序三种方法

C#调用Halcon程序三种方法 1.halcon导出C#文件,在C#里面调用 2.在C#里面使用Halcon引擎调用Halcon程序 3.在C#里面使用Halcon引擎调用.hdev下本地函数或者.hdvp外部函数 Halcon引擎手册:C:/Program Files/MVTec/HALCON-21.11-Progress/doc_en_US/html/manuals/programmers_guide/programmers_guide_0120.html 1.导出C#(代码我只给出类,需要调用)

A541925504的博客 1万+

Word2vec核心模型精讲:CBOW与Skip-gram

Word2vec是Google提出的词向量模型,通过CBOW和Skip-gram两种神经网络架构将词汇映射到低维向量空间。CBOW通过上下文预测中心词,训练速度快但高频词表现更好;Skip-gram则相反,通过中心词预测上下文,适合处理生僻词。为解决softmax计算效率问题,Word2vec引入基于哈夫曼树的Hierarchical Softmax优化技术,将复杂度从O(V)降至O(logV)。文章详细解析了两种模型的原理差异,并演示了哈夫曼树的构造过程及其在词向量训练中的关键作用,这种结合词频的优

Trisyp的博客 528

android studio Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException

今天在编译项目时候报这个错, 记录下解决过程 Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。 at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidBy...

Corey_Jia 2055

C语言程序设计——单词的统计和替换

【任务描述】 对任意一篇英文文章,统计其中每个单词分别出现了多少次,并可替换指定的单词。⑶ 对单词进行替换时,允许用户选择全部替换或逐个替换。替换完成后,将文章保存到文件。⑴ 英文文章以文件形式输入。⑵ 统计的结果保存到文件。

m0_60738889的博客 810

【转载】struts应用在断网情况下启动报错解决办法(java/net/AbstractPlainSocketImpl.java:178:-1)...

无意间struts应用在有网络的情况下启动正常,在断网的情况下启动报错,报错代码如下图所示: SEVERE: Exception starting filter struts2 Class: java.net.AbstractPlainSocketImpl File: AbstractPlainSocketImpl.java Method: connect Line: 17...

aed97713的博客 307

手把手教你学Simulink——基于重复控制(RC)的并网逆变器场景实例:基于RC的单相并网逆变器仿真

本次教程深入剖析了重复控制(RC)在单相并网逆变器中的应用,解决了周期性谐波抑制这一核心难题。核心收获RC是谐波抑制的“核武器”:它利用内模原理,对所有周期性谐波提供无限大增益,实现理论上无静差的跟踪和抑制。PI+RC是黄金组合:PI提供快速响应,RC提供稳态精度,二者结合,兼顾了动态与稳态性能。结构简单,效果卓越:相比多个PR控制器,RC仅需一个模块,即可抑制所有谐波,设计简洁。电能质量的终极追求,是波形的纯净。重复控制,如同一位不知疲倦的校对员它记住每一次错误(上一周期的误差),

MHD0815的博客 189

Unity-RetargetPro3-动画插件试用

一个名气大于实战的插件。

大话程序员 710

PAS部署:PAS中部署springboot应用报错:在本地仓库中找不到请求的模式, 请确保XML命名空间声明中没有拼写错误。

PAS部署:PAS中部署springboot应用报错:在本地仓库中找不到请求的模式, 请确保XML命名空间声明中没有拼写错误。

py_doc的博客 495

C/C++李峋同款跳动的爱心代码(完整代码)

C++语言实现出李峋同款跳动的爱心的完整代码。

AIGC 10万+

项目启动,无法加载Spring xsd文件

问题的产生:有个Java项目(Jar文件),每半小时重启一次,对外提供服务。 突然收到报警,早上5点半重启服务时出错,服务无法正常启动。 查看启动日志,错误是 xml解析失败,无法找到xml元素的声明。 具体报错日志如下: INFO: Loading XML bean definitions from class path resource [applicationContext-task

走过的足迹 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java报错:com.sun.org.apache.xerces.internal.impl.xpath.regex

jdk版本过高导致,重新下载低版本jdk,从文件-项目结构-项目设置-项目-sdk修改jdk版本。

qq_73192970的博客 1238

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

dom4j 解析报错java.net.UnknownHostException:java.sun.com

dom4j 解析报错java.net.UnknownHostException:java.sun.com 问题现象: 在开发中使用到了dom4j去解析一个xml格式的文件,代码中使用到了SAXReader进行转换。 在本机电脑测试运行时,没有任何问题,当放在服务器时,报错: java.net.UnknownHostException:java.sun.com 问题代码: SAXReader reader = new SAXReader(); Document doc = reader.read(f);

王晓斌的博客 1649

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

DOM4j解析XMl中碰到的问题解决

引言: DOM4j是java中最为流行的xml解析类库,在使用过程中,碰到了若干问题,这里记录一下,方便后续查询。

木小鱼的笔记 9466

java 反序列化xml_java反序列化xml,为什么报错了

展开全部下面是在D盘下,People.xml文件:Plain Text code?Dr. BunsenHoneydewGonzoThe GreatPhillip J.Fry下面是java文件:Java code?import java.util.ArrayList;import nu.xom.Builder;import nu.xom.Document;import nu.xom.Elements...

weixin_30788829的博客 752

java解析xml 忽略dtd_转载: 使用dom4j解析XML时候忽略DTD文件

情景切入: 最近学校老师布置一个小作业,要求使用dom4j将xml文件转换成project.properties配置文件和Excel表格: 如XML文件: 三国官方包下载地址:http://www.dom4j.org/download.html转载:http://www.blogjava.net/rain1102/archive/2009/09/07/290063.html当你用domj读取一个有...

weixin_39611161的博客 399

dom4j解析xml文件时忽略DOCTYPE标签

利用dom4j读取xml配置文件时,如果文件中出现DOCTYPE标签,可能会在read时读取异常: Document document = reader.read(file); 导致文件读取失败,如下: Exception in thread "main" org.dom4j.DocumentException: Error on line 1 of document http://t...

qq_42106106的博客 2689

关于XML解析存在的安全问题记录

前段时间被爆出微信支付sdk漏洞,吓得赶紧去项目里看了下微信的SDK(虽然没多少人使用),发现使用的微信sdk不是当前发布的最新的SDK,也就没有使用下面的DocumentBuilderFactory来解析xml,其实不仅是微信的SDK,所有使用xml的地方都需要注意。 DocumentBuilderFactory documentBuilderFactory = DocumentBuilde...

梦寻千古的博客 7102

jdom 或 dom4j读取xml文件时如何让dtd验证使用本地dtd文件或者不生效

一、写在所有之前:因为dom4j和jdom在这个问题上处理的方法是一模一样的,只是一个是SAXBuilder 一个SAXReader,这里以jdom距离,至于dom4j只需要同理替换一下就可以了。二、问题发生的情况当你用jdom读取一个有dtd验证的xml文件,同时你的网络是不通的情况下。会出现以下错误:1,代码如下package dom;import java.io.File;imp

okJohn's blog 1848

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

注意:该异常发生也可以是其他XML解析器,这里以XStream为例。 使用XStream解析xml文件的时候抛出异常: org.xml.sax.SAXParseException;将功能 “http://apache.org/xml/features/disallow-doctype-decl” 设置为“真”时, 不允许使用 DOCTYPE。 Caused by: org.xml....

洛丹伦的夏天 2万+

dom4j 忽略 dtd 验证

在使用dom4j 对 xml文件解析时经常会碰到dtd验证的问题。 像下面的声明: [code="java"] ... [/code] 在读取的时候会遇到如下错误信息: [code="java"]org.dom4j.DocumentException: Connection timed out: connect Nested exception: Connection ...

猪才怪 441

读取xml文件时不做validation的方法

今天遇到一个问题,我使用dom4j读取一个xml文件的内容,该xml文件中指定了一个dtd文件,而我并没有这个dtd文 件,在我用SAXReader读取xml文件时,便报如下错误: [code="java"]java.io.FileNotFoundException: [dtd文件名] (The system cannot find the file specified) at jav...

一羽的专栏 1112
上一篇: javascript之prototype、__proto__和constructor
下一篇: 细线表格的制作
javaRwx
博客等级 码龄20年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值