• 解析xml——采用Jdom与dom4J方式读xml文档


      对于java,现在目前流行解析xml的技术有4种。它们分别是:dom、jdom、dom4j、sax。前3种是基于dom树解析的,后一种是基于事件处理机制的。其中最流行的为jdom与dom4j的解析方式。以下分别是jdom与dom4j方式读xml文档。有什么错误与建议希望大家给我邮件,大家共同进步。

      xml文档如下:

      文档名称:studentInfo.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <class>
     3     <student no="1001">
     4         <name>张三</name>
     5         <sex></sex>
     6         <age>20</age>
     7         <score>
     8             <java>90</java>
     9             <net>85</net>
    10             <html>87</html>
    11         </score>
    12     </student>
    13     
    14     <student no="1002">
    15         <name>xi</name>
    16         <sex></sex>
    17         <age>20</age>
    18         <score>
    19             <java>78</java>
    20             <net>79</net>
    21             <html>87</html>
    22         </score>
    23     </student>
    24 </class>

    一.Jdom方式读xml文档,代码如下:
       使用此方式需要导入:org.jdom.jar这个包

    View Code
     1 import java.io.FileInputStream;
     2 import java.util.List;
     3 import org.jdom.Document;
     4 import org.jdom.Element;
     5 import org.jdom.input.SAXBuilder;
     6 
     7 /**
     8  * 解析xml
     9  * 用jdom读studentInfo.xml中的数据
    10  * @author dell
    11  *
    12  */
    13 public class ReaderXML {
    14     
    15     public static void main(String[] args) {
    16         
    17         //1.新建一个解析器
    18         SAXBuilder builder=new SAXBuilder();
    19         
    20         
    21         Document doc=null;
    22         try {
    23             //2.获取解析的文档
    24             doc=builder.build(new FileInputStream("G:\\javaWeb\\chapter01\\WebRoot\\studentInfo.xml"));
    25             
    26         } catch (Exception e) {
    27             
    28             e.printStackTrace();
    29         }
    30         
    31         //3.获取根节点
    32         Element root=doc.getRootElement();
    33         
    34         //4.获取子节点
    35         List<Element> list=root.getChildren();
    36         
    37         //5.循环读取数据
    38         System.out.println("学号\t姓名\t性别\t年龄\tjava成绩\t.net成绩\thtml成绩");
    39         
    40         for (Element element : list) {
    41             
    42             List<Element> score=element.getChildren("score");//获取score节点下的子节点
    43             
    44             for (Element s : score) {
    45                 
    46                 System.out.print(element.getAttributeValue("no")+"\t"+element.getChildText("name")+"\t"+element.getChildText("sex")+"\t"+element.getChildText("age")+"\t");
    47                 System.out.print(s.getChildText("java")+"\t"+s.getChildText("net")+"\t"+s.getChildText("html")+"\n");
    48             }
    49                 
    50         }
    51         
    52     }
    53 }

    二.dom4J方式读xml文档,代码如下:
      使用此方式需要导入:org.dom4j-1.6.1.jar这个包

     1 import java.io.*;
     2 import java.util.List;
     3 
     4 import org.dom4j.Document;
     5 import org.dom4j.Element;
     6 import org.dom4j.io.SAXReader;
     7 
     8 /**
     9  * 解析xml
    10  * 读取studentInfo.xml中的数据
    11  * 采用dom4j方式解析
    12  * dom4j是jdom一种优化式的封装
    13  * @author dell
    14  *
    15  */
    16 public class ReaderXML {
    17     
    18     public static void main(String[] args) {
    19         //1.创建解析器
    20         SAXReader reader=new SAXReader();
    21         
    22         
    23         Document doc=null;
    24         
    25         try {
    26             //2.得到document对象
    27             doc=reader.read(new File("G:\\javaWeb\\chapter01\\WebRoot\\studentInfo.xml"));
    28             
    29         } catch (Exception e) {
    30             
    31             e.printStackTrace();
    32         }
    33         //3.得到根节点
    34         Element root=doc.getRootElement();
    35         
    36         //4.得到子节点
    37         List<Element> list=root.elements();
    38         
    39         //5.取值
    40         System.out.println("学号\t姓名\t性别\t年龄\tjava成绩\t.net成绩\thtml成绩");
    41         
    42         for (Element element : list) {
    43             
    44             List<Element> score=element.elements("score");//得到score下的子节点
    45             
    46             for (Element s : score) {
    47                 
    48                 System.out.print(element.attributeValue("no")+"\t"+element.elementText("name")+"\t"+element.elementText("sex")+"\t"+element.elementText("age")+"\t");
    49                 
    50                 System.out.print(s.elementText("java")+"\t"+s.elementText("net")+"\t"+s.elementText("html")+"\n");
    51             }
    52         }
    53         
    54     }
    55 }

      

  • 相关阅读:
    未来房价经济管窥(崩溃不行,疯涨也不行,所以只能冰冻。房产税的开征是个关键转折点,也是判断未来房价的重要指标。大城市的房租还会继续涨,以后不愁没房子住,虽然仍然买不起)
    QT使用UAC(经过验证)
    ALT+数字,可输入汉字或拉丁字母 good
    RUST叫系统编程语言,而GO是网络编程语言
    最近学习了下BI(商业智能)做报表
    选择优势股票,动态配置
    对加密方式(公钥私钥)的形象理解(以http和https为例)
    SQLServer重建索引
    怎么样成为一个全栈程序员(请把一个能力发展到90,如果你还有余力把另一个能力发展到90,否则就是平庸的废材)
    如何才能学到Qt的精髓——信号槽之间的无关性,提供了绝佳的对象间通讯方式,QT的GUI全是自己的一套,并且完全开源,提供了一个绝好机会窥视gui具体实现
  • 原文地址:https://www.cnblogs.com/huzi007/p/2720411.html
Copyright © 2020-2023  润新知