DomReader工具
2016-07-06 10:17
399 查看
解析xml等信息的工具.
首先, 有一个单例工厂DomBuilderFactoryHelper, 用于生成解析器.
package com.gionee.pay.settle.factory;
import javax.xml.parsers.DocumentBuilderFactory;
/**
* xml工厂
*
* @author: wuxing
* @date: 2016年7月5日 下午6:04:08
*
*/
public class DomBuilderFactoryHelper {
private static DocumentBuilderFactory docBuilderFactory;
public static DocumentBuilderFactory getDocBuilderFactory() {
if (docBuilderFactory == null) {
synchronized (DomBuilderFactoryHelper.class) {
if (docBuilderFactory == null) {
docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setIgnoringElementContentWhitespace(true);
}
}
}
return docBuilderFactory;
}
}
然后, 具体的实现工具类DomReaderUtils.
package com.gionee.common.utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import com.gionee.pay.settle.factory.DomBuilderFactoryHelper;
/**
* xml解析类
*
* @author: wuxing
* @date: 2016年7月5日 下午6:03:01
*
*/
public class DomReaderUtils {
protected Document _doc;
protected static DocumentBuilderFactory factory = DomBuilderFactoryHelper.getDocBuilderFactory();
public DomReaderUtils(String in) throws SAXException, IOException {
try {
DocumentBuilder builder = factory.newDocumentBuilder();
_doc = builder.parse(new InputSource(new StringReader(in)));
builder.reset();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
public DomReaderUtils(InputStream in) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilder builder = factory.newDocumentBuilder();
_doc = builder.parse(in);
builder.reset();
}
public DomReaderUtils(Document doc) {
_doc = doc;
}
public String getElementContent(String name) {
Node node = _doc.getElementsByTagName(name).item(0);
if (null == node) {
return null;
}
return node.getTextContent();
}
public String getAttribute(String element, String attrib) {
Node node = _doc.getElementsByTagName(element).item(0);
if (null == node) {
return null;
}
NamedNodeMap namedNodeMap = node.getAttributes();
if (null == namedNodeMap) {
return null;
}
Node item = namedNodeMap.getNamedItem(attrib);
if (null == item) {
return null;
}
return item.getTextContent();
}
}
通过工具类,就可以将xml等数据进行解析..
demo:
DomReaderUtils domReader = new DomReaderUtils(response);
String returnCode = domReader.getElementContent("return_code");
String returnMsg = domReader.getElementContent("return_msg");
将数据加载到reader当中, 通过getElementContent方法获取节点元素的数据.
首先, 有一个单例工厂DomBuilderFactoryHelper, 用于生成解析器.
package com.gionee.pay.settle.factory;
import javax.xml.parsers.DocumentBuilderFactory;
/**
* xml工厂
*
* @author: wuxing
* @date: 2016年7月5日 下午6:04:08
*
*/
public class DomBuilderFactoryHelper {
private static DocumentBuilderFactory docBuilderFactory;
public static DocumentBuilderFactory getDocBuilderFactory() {
if (docBuilderFactory == null) {
synchronized (DomBuilderFactoryHelper.class) {
if (docBuilderFactory == null) {
docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setIgnoringElementContentWhitespace(true);
}
}
}
return docBuilderFactory;
}
}
然后, 具体的实现工具类DomReaderUtils.
package com.gionee.common.utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import com.gionee.pay.settle.factory.DomBuilderFactoryHelper;
/**
* xml解析类
*
* @author: wuxing
* @date: 2016年7月5日 下午6:03:01
*
*/
public class DomReaderUtils {
protected Document _doc;
protected static DocumentBuilderFactory factory = DomBuilderFactoryHelper.getDocBuilderFactory();
public DomReaderUtils(String in) throws SAXException, IOException {
try {
DocumentBuilder builder = factory.newDocumentBuilder();
_doc = builder.parse(new InputSource(new StringReader(in)));
builder.reset();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
public DomReaderUtils(InputStream in) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilder builder = factory.newDocumentBuilder();
_doc = builder.parse(in);
builder.reset();
}
public DomReaderUtils(Document doc) {
_doc = doc;
}
public String getElementContent(String name) {
Node node = _doc.getElementsByTagName(name).item(0);
if (null == node) {
return null;
}
return node.getTextContent();
}
public String getAttribute(String element, String attrib) {
Node node = _doc.getElementsByTagName(element).item(0);
if (null == node) {
return null;
}
NamedNodeMap namedNodeMap = node.getAttributes();
if (null == namedNodeMap) {
return null;
}
Node item = namedNodeMap.getNamedItem(attrib);
if (null == item) {
return null;
}
return item.getTextContent();
}
}
通过工具类,就可以将xml等数据进行解析..
demo:
DomReaderUtils domReader = new DomReaderUtils(response);
String returnCode = domReader.getElementContent("return_code");
String returnMsg = domReader.getElementContent("return_msg");
将数据加载到reader当中, 通过getElementContent方法获取节点元素的数据.
相关文章推荐
- 基础语法
- Java Web知识结构
- java.lang.NoClassDefFoundError: org/jaxen/JaxenException
- 对超过2TB的硬盘进行分区需要使用parted
- 李洪强经典面试题27
- spring boot 学习笔记(009)application.yml
- MYSQL技巧
- HDU 3436 题解
- spring mvc在tomcat中get方式中文乱码
- AngularJS实现跨域请求
- oracle统计(当前层级以及所有下级组织机构登录次数总和)
- JAVA自动适配Linux与Windows文件路径分隔符
- cdq分治 -- CF edu13 F Lena and Queries
- linux常用命令举例
- 操作系统精髓与设计原理(原书第6版)——学习笔记(7)
- 生无可恋的一叶知秋#百度刘超事件#
- WARN 02:04:10 Batch of prepared statements for [falcon_gps.gps] is of size 18000, exceeding specified threshold of 5120 by 12880.
- ubuntu查看文件大小
- mac下ppk 转ssh
- Delphi通过ICMP检测与远程主机连接