java 解析 xml 文件实例

著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

使用工具: SAXBuilder
依赖


    org.jdom
    jdom2
    2.0.3

       通俗来说,解析 xml 文件的意思就是对于给定的 .xml 格式的文件,通过程序取出 xml 文件中我们想要的内容。

       下面我们通过具体实例来演示一下如何通过 java 使用 SAXBuilder 来解析 xml 文件。
       假设 input.xml 文件的内容如下:



  
     dinkar
     kad
     dinkar
     85
  
  
  
     Vaneet
     Gupta
     vinni
     95
  
  
  
     jasvir
     singn
     jazz
     90
  

       这里我自己引入了一个 “块” 的概念来简单地形容 xml 文件的结构,虽然不准确,但能够方便我们沟通。xml 文件中的 “块” 一般是指由一个开始标签和一个结束标签括起来的部分,如上述 xml 文件中的 class 块和 student 块,另外还包含 firstname 块、lastname 块、nickname 块和 marks 块。
       java 在使用 SAXBuilder 解析 xml 文件时,每个 “块” 都用 Element 来表示,这在下面的代码中有所体现。
       现在我们要解析上述 xml 文件的内容,并在控制台上输出如下的信息:

Root element :class
----------------------------

Current Element :student
Student roll no : 393
First Name : dinkar
Last Name : kad
Nick Name : dinkar
Marks : 85

Current Element :student
Student roll no : 493
First Name : Vaneet
Last Name : Gupta
Nick Name : vinni
Marks : 95

Current Element :student
Student roll no : 593
First Name : jasvir
Last Name : singn
Nick Name : jazz
Marks : 90

       下面开始展示具体代码:

public class XmlParser {

   public static void main(String[] args) {

      try {
         File inputFile = new File("input.xml");
         SAXBuilder saxBuilder = new SAXBuilder();
         Document document = saxBuilder.build(inputFile);

         System.out.println("Root element :" + document.getRootElement().getName());

         // 每个 xml 文件都只有一个 root 块
         // 上面的 xml 文件对应的 root 块就是 class 块
         Element classElement = document.getRootElement();

         // getChildren() 方法只得到儿子,不得到孙子和曾孙子等
         // 所以这里得到的是三个 student 块
         List studentList = classElement.getChildren();
         System.out.println("----------------------------");

         // 遍历三个 student 块
         for (int i = 0; i < studentList.size(); i++) {    
            Element student = studentList.get(i);
            System.out.println("\nCurrent Element :" + student.getName());
  
            // 注意这里用的不是 Element ,而是 Attribute
            // 这是因为在该 xml 文件中 rollno 对应的不是 “块”,而是一个属性
            Attribute attribute =  student.getAttribute("rollno");
            System.out.println("Student roll no : " + attribute.getValue() );

            // 形象地来说,xml 文件是由其中的各个 “块” 组成的树状结构,每个 “块” 都是
            // 树的一个节点,当我们解析叶子节点时就可以使用下面的方式
            System.out.println("First Name : " + student.getChild("firstname").getText());
            System.out.println("Last Name : " + student.getChild("lastname").getText());
            System.out.println("Nick Name : " + student.getChild("nickname").getText());
            System.out.println("Marks : " + student.getChild("marks").getText());
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

上一篇:规则引擎 Easy Rules 使用实例(二)
下一篇:使用 Gson 实现 Json 字符串和 Java 对象之间的相互转换

你可能感兴趣的:(java 解析 xml 文件实例)