关于java:Java解析xml文件和json转换的方法DOM4j解析

53次阅读

共计 2440 个字符,预计需要花费 7 分钟才能阅读完成。

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

}
}
运行后果:

  1. 应用 XPATH 进行解析
  2. 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));
    }
}

运行后果:

到此这篇对于 Java 解析 xml 文件和 json 转换的文章就介绍到这了,谢谢大家的观看

正文完
 0