`

数据解析

xml 
阅读更多
1.解析xml 文件存储到 hashmap
(1).需要导入的jar 包:
这里我们借助于开源框架dom4j去解析xml(这里使用的是dom4j-1.6.1.jar),然后将解析得到的结果存入HashMap,解析请求消息的方法如下:
(2) 实现代码:
public static Map<String, String> parseXml(HttpServletRequest request) {
        // 将解析结果存储在HashMap中 
        Map<String, String> map = new HashMap<String, String>(); 
 
        try {
// 从request中取得输入流 
InputStream inputStream = request.getInputStream(); 
// 读取输入流 
SAXReader reader = new SAXReader(); 
Document document = reader.read(inputStream); 
// 得到xml根元素 
Element root = document.getRootElement(); 
// 得到根元素的所有子节点 
List<Element> elementList = root.elements(); 
 
// 遍历所有子节点 
for (Element e : elementList) 
    map.put(e.getName(), e.getText()); 
 
// 释放资源 
inputStream.close(); 
inputStream = null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
log.info("IOException:" + e.getMessage());

} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
log.debug("DocumentException e" + e.getMessage());

 
        return map; 
    } 

(3)将java bean 数据解析成xml

采用开源框架xstream来实现Java类到xml的转换(这里使用的是xstream-1.3.1.jar),代码如下:

/**
* 文本消息对象转换成xml
*
* @param textMessage 文本消息对象
* @return xml
*/
public static String textMessageToXml(TextMessage textMessage) {
xstream.alias("xml", textMessage.getClass());
return xstream.toXML(textMessage);
}

/**
* 音乐消息对象转换成xml
*
* @param musicMessage 音乐消息对象
* @return xml
*/
public static String musicMessageToXml(MusicMessage musicMessage) {
xstream.alias("xml", musicMessage.getClass());
return xstream.toXML(musicMessage);
}

/**
* 图文消息对象转换成xml
*
* @param newsMessage 图文消息对象
* @return xml
*/
public static String newsMessageToXml(NewsMessage newsMessage) {
xstream.alias("xml", newsMessage.getClass());
xstream.alias("item", new Article().getClass());
return xstream.toXML(newsMessage);
}

/**
* 扩展xstream,使其支持CDATA块
*
* @date 2013-05-19
*/
private static XStream xstream = new XStream(new XppDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
// 对所有xml节点的转换都增加CDATA标记
boolean cdata = true;

@SuppressWarnings("unchecked")
public void startNode(String name, Class clazz) {
super.startNode(name, clazz);
}

protected void writeText(QuickWriter writer, String text) {
if (cdata) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
} else {
writer.write(text);
}
}
};
}
});



2.配置文件xml 解析
private static void init_rundong_xml() {

try {
// 解析配置文件的步骤
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 创建documentBuilder 对象
DocumentBuilder db = dbf.newDocumentBuilder();
log.info("# 读取润东xml配置");
File rundong_xml = new File(MapUtil.class.getClassLoader()
.getResource("rundong.xml").getPath());

if (!rundong_xml.exists()) {
log.error("读取rundong.xml属性文件失败:没有这个文件 "
+ rundong_xml.getAbsolutePath());
} else {
log.info("rundong_xml.getAbsolutePath():"
+ rundong_xml.getAbsolutePath());
rundong_parse(db.parse(rundong_xml), rundong_product);
}

} catch (Exception e) {
log.error(e.getMessage());
log.error("failure");

return;
}

}






3.json 解析



4.mongodb 解析与存储

5.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics