亲宝软件园·资讯

展开

java xml文件json转换 Java解析xml文件和json转换的方法(DOM4j解析)

倾心之夏 人气:0
想了解Java解析xml文件和json转换的方法(DOM4j解析)的相关内容吗,倾心之夏在本文为您仔细讲解java xml文件json转换的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java,xml文件json转换,java,解析ml文件,下面大家一起来学习吧。

Java解析xml的方法有四种:

  1. DOM解析
  2. SAX解析
  3. JDOM解析
  4. 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里面封装了一个抽象的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));
    }
}

运行结果:

在这里插入图片描述

加载全部内容

相关教程
猜你喜欢
用户评论