java xml文件json转换 Java解析xml文件和json转换的方法(DOM4j解析)
倾心之夏 人气:0想了解Java解析xml文件和json转换的方法(DOM4j解析)的相关内容吗,倾心之夏在本文为您仔细讲解java xml文件json转换的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java,xml文件json转换,java,解析ml文件,下面大家一起来学习吧。
Java解析xml的方法有四种:
- DOM解析
- SAX解析
- JDOM解析
- DOM4J解析
本次主要介绍使用DOM4j进行解析:
这里我主要使用两种方式去解析:
xml文件内容
<?xml version="1.0" encoding="utf-8"?> <books> <book id="1"> <name>金苹果</name> <info>锄禾日当午</info> </book> <book id="2"> <name>银苹果</name> <info>苹果很幸苦</info> </book> </books>
节点操作解析
public class Demo1 { public static void main(String[] args) throws IOException, DocumentException { // 获取输入流 FileInputStream fis = new FileInputStream("javaSE/src/com/practise/xml_json/book.xml"); // 创建xml的读取对象 SAXReader reader = new SAXReader(); // 读取xml文件 Document document = reader.read(fis); // 获取根节点对象 Element root = document.getRootElement(); // 获取根节点的名字 List<Element> books = root.elements(); // 遍历获取第二个节点 for (int i = 0; i < books.size(); i++) { Element book = books.get(i); System.out.println(book.attributeValue("id")); System.out.println(book.elementTextTrim("name")); System.out.println(book.elementTextTrim("info")); /* 使用循环一直获取xml的内容,个人认为适合操作不知道标签的情况下操作, 以免造成内存的浪费。 */ //List<Element> list = book.elements(); //for (int j = 0; j < list.size(); j++) { // System.out.println(list.get(j).getTextTrim()); //} } fis.close(); } }
运行结果:
6. 使用XPATH进行解析
public class XpathDemo { /* / : 表示根节点 // : 从发起查找的节点开始查找后代节点 . : 查找当前节点 .. : 查找父节点 @ : 选择属性 * 使用方式:[@属性名='值'] */ public static void main(String[] args) throws FileNotFoundException, DocumentException { FileInputStream fis = new FileInputStream("javaSE/src/com/practise/xml_json/book.xml"); SAXReader read = new SAXReader(); Document document = read.read(fis); // 通过文档对象+XPath查找所有的name节点 List<Node> names = document.selectNodes("//name"); for (Node name : names) { System.out.println(name.getName() + ":" + name.getText()); } // 获取指定id的name节点 Node node = document.selectSingleNode("//book[@id='1']//name"); System.out.println(node.getName() + ":" + node.getText()); } }
Java转换json数据,在这里我推荐两个包,就是fastjson和gjson
fastjson作为alibaba的国内开源json包,也是很不错的,但是在1.2.69的版本上好像有bug,后面应该已经改善了。
gjson的作为谷歌的国外的开源ison包,也有其优势。
我主要就是说一说这两个开源包的使用
- fastjson的使用
fastjson里面封装了一个抽象的JSON类,里面有着许多静态方法,所以我们不需要实例化对象,直接通过类名.方法名就可以调用了。
public class FastJsonDemo { public static void main(String[] args) { // 将对象转换为json数据 System.out.println(JSON.toJSON(new Book(1001, "水浒传", "武松打虎"))); // 将json对象转换为Java对象,注意不要把双引号改为单引号,这里的双引号是通过了转义的得到的 Book book = JSON.parseObject("{\"id\":1001,\"name\":\"水浒传\",\"info\":\"武松打虎\"}", Book.class); System.out.println(book.getName()); } }
运行结果:
-gjson的使用
gson使用起来相对于fastjson来说有点复杂.
public class JsonDemo1 { public static void main(String[] args) { // 创建gson对象 Gson gson = new Gson(); // 转换 Book book = new Book(1001, "水浒传", "武松打虎"); String s = gson.toJson(book); System.out.println(s); System.out.println(gson.fromJson(s, Book.class)); } }
运行结果:
加载全部内容