欢迎使用CSDN-markdown编辑器

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值