服务器之家

服务器之家 > 正文

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

时间:2021-11-10 10:59     来源/作者:倾心之夏

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();
   }
}

运行结果:

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

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());
    }
}

运行结果:

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

-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));
    }
}

运行结果:

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

到此这篇关于Java解析xml文件和json转换的文章就介绍到这了,更多相关java xml文件json转换内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_46916296/article/details/119486647

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部