您的位置:首页 > 其它

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方法获取节点元素的数据.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: