DOM解析xml,没网时报错
xml文件格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ris.manager.mapper.MgVariableDescriptionConfigMapper">
<resultMap id="BaseResultMap" type="com.ris.manager.domain.MgVariableDescriptionConfig">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu Dec 01 14:38:01 CST 2016.
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="variable_key" jdbcType="VARCHAR" property="variableKey" />
<result column="src_type" jdbcType="VARCHAR" property="srcType" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="operate_user" jdbcType="VARCHAR" property="operateUser" />
</resultMap>
后面略
解析是报错
java.net.UnknownHostException:mybatis.org……
解析xml的代码如下:
File hbmFile = new File(hbmFileName);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(hbmFile);
原因:
The parser is trying to download the DTD from mybatis.sourceforge.net in order to validate the parsed XML.
However, the DNS client on the machine can’t resolve that host name for some reason (it resolves fine to 82.98.86.175 on my machine).
To avoid this problem, you have to tell the DocumentBuilderFactory to ignore the DTD:
File hbmFile = new File(hbmFileName);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
dbf.setFeature(“http://apache.org/xml/features/nonvalidating/load-external-dtd“, false);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(hbmFile);