首页 > 代码库 > 基于lucene的案例开发:JsonUtil & XmlUtil
基于lucene的案例开发:JsonUtil & XmlUtil
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/43194015
从这篇博客开始第二大部分就算正式开始了,不过在介绍搜索后台之前,还是先介绍写可能使用的大工具类,这样在后面的搜索后台介绍中,就不会穿插其他的内容介绍。这篇就主要介绍两个工具类:json、xml格式数据处理类。
JSON
在前后台数据通信过程中,json数据格式是一种比较常用的方式。将javabean转化为json格式字符串,可以通过简单的字符串拼接,也可以使用第三方jar包进行处理,这里介绍的类也是基于第三方jar包实现的。代码实现如下:
从这篇博客开始第二大部分就算正式开始了,不过在介绍搜索后台之前,还是先介绍写可能使用的大工具类,这样在后面的搜索后台介绍中,就不会穿插其他的内容介绍。这篇就主要介绍两个工具类:json、xml格式数据处理类。
JSON
在前后台数据通信过程中,json数据格式是一种比较常用的方式。将javabean转化为json格式字符串,可以通过简单的字符串拼接,也可以使用第三方jar包进行处理,这里介绍的类也是基于第三方jar包实现的。代码实现如下:
/** *@Description: json数据工具 */ package com.lulei.util; import java.io.IOException; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonUtil { public static final String NO_DATA = http://www.mamicode.com/"{/"data/":null}";>
当然这里对第三方jar包进行再一次封装在项目中更简单的使用,上述main函数的运行结果如下(数据经过格式话处理):至于其他方法如若感兴趣可以自行测试。
XML
在和前台的通信的过程中,xml数据格式也是一种常用方法,同时xml数据格式也是后台配置文件的一种形式。对xml数据的处理,有很多第三方jar包,这是使用的是dom4j,代码实现如下:/** *@Description: Xml工具类 */ package com.lulei.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringWriter; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Node; public class XmlUtil { private static String noResult = "<root>no result</root>"; /** * @param obj * @return * @Author:lulei * @Description: 将java对象转化为xml格式的字符串 */ public static String parseObjToXmlString(Object obj){ if (obj == null) { return noResult; } StringWriter sw = new StringWriter(); JAXBContext jAXBContext; Marshaller marshaller; try { jAXBContext = JAXBContext.newInstance(obj.getClass()); marshaller = jAXBContext.createMarshaller(); marshaller.marshal(obj, sw); return sw.toString(); } catch (JAXBException e) { // TODO Auto-generated catch block e.printStackTrace(); } return noResult; } /** * @param xml * @return * @Author: lulei * @Description: 将xml String对象转化为xml对象 */ public static Document createFromString(String xml){ try { return DocumentHelper.parseText(xml); } catch (DocumentException e) { e.printStackTrace(); return null; } } /** * @param xpath * @param node * @return * @Author: lulei * @Description: 获取指定xpath的文本,当解析失败返回null */ public static String getTextFromNode(String xpath,Node node){ try { return node.selectSingleNode(xpath).getText(); } catch (Exception e) { return null; } } /** * @param path * @Author: lulei * @Description: 读取xml文件 * @return xml文件对应的Document */ public static Document createFromPath(String path){ return createFromString(readFile(path)); } /** * @param path * @Author: lulei * @Description: 读文件 * @return 返回文件内容字符串 */ private static String readFile(String path) { File file = new File(path); FileInputStream fileInputStream; StringBuffer sb = new StringBuffer(); try { fileInputStream = new FileInputStream(file); //错误使用UTF-8读取内容 String charset = CharsetUtil.getStreamCharset(file.toURI().toURL(), "utf-8"); InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s; while ((s = bufferedReader.readLine()) != null){ s = s.replaceAll("\t", "").trim(); if (s.length() > 0){ sb.append(s); } } fileInputStream.close(); bufferedReader.close(); fileInputStream.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return sb.toString(); } public static void main(String[] args) { } }
XmlUtil的一个使用事例如下所示:/** *@Description: 章节列表搜索结果 */ package com.lulei.test; import java.util.ArrayList; import javax.xml.bind.annotation.XmlRootElement; import com.lulei.util.XmlUtil; @XmlRootElement(name = "root") public class TestXmlUtil { private int count; private ArrayList<String> result; public TestXmlUtil() { count = 3; result = new ArrayList<String>(); result.add("test1"); result.add("test2"); result.add("test3"); } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public ArrayList<String> getResult() { return result; } public void setResult(ArrayList<String> result) { this.result = result; } public static void main(String[] args) { System.out.println(XmlUtil.parseObjToXmlString(new TestXmlUtil())); } }
运行结果如下图所示(数据经过格式话处理):在XmlUtil类中使用到了CharsetUtil类,关于CharsetUtil类在以后的博客中再详细介绍(主要作用就是检测文件或者流的编码方式等)。
ps:最近发现其他网站可能会对博客转载,上面并没有源链接,如想查看更多关于 基于lucene的案例开发 请点击这里。或访问网址http://blog.csdn.net/xiaojimanman/article/category/2841877基于lucene的案例开发:JsonUtil & XmlUtil
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。