package com.cabletech.business.webservice.utils;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.net.URISyntaxException;
import java.net.URL;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
* XML解析工具类
*
* @author 杨隽 2012-06-07 创建
*
*/
public class XmlReaderUtils {
/**
* 读取信息结构配置XML文件
*
* @param url
* URL XML文件的URL路径
* @return Document 配置XML文件
* @throws DocumentException
* @throws URISyntaxException
*/
public static Document read(URL url) throws DocumentException,
URISyntaxException {
SAXReader reader = new SAXReader();
initialize(reader);
Document document = reader.read(new File(url.toURI()));
return document;
}
/**
* 读取信息结构配置XML文件内容
*
* @param xmlText
* String XML文件内容
* @return Document 配置XML文件
* @throws DocumentException
*/
public static Document read(String xmlText) throws DocumentException {
SAXReader reader = new SAXReader();
initialize(reader);
Document document = reader.read(new StringReader(xmlText));
return document;
}
/**
* 初始化XML文件解析设置(忽略DTD文件)
*
* @param reader
* SAXReader XML阅读器
*/
private static void initialize(SAXReader reader) {
reader.setValidation(false);
reader.setEntityResolver(new EntityResolver() {
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
return new InputSource(new ByteArrayInputStream(
"<?xml version='1.0' encoding='UTF-8'?>".getBytes()));
}
});
}
}