zoukankan      html  css  js  c++  java
  • xml解析工具-jdom

    前言:近期接触SSH框架的时候,经常得配置一下xml文件;今天闲来没事就挖挖xml解析的原理供大伙儿分享。本文主要通过一个简单的例子解析一个xml文件。明白其中缘由之后,大家想定义自己的xml也绝非难事~

      JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。其解析步骤其实很简单,可以将一个xml文件类比一棵树。首先从根节点开始解析,之后遍历左右孩子结点,孩子结点再递归解析孩子结点。。。(注意,遍历的时候应该区别于深度优先遍历,准确的理解应该是层次遍历!)

    ·树级解析


    ·Java代码

    2个文件(test.xml和Sample1.java),另外请自己上网下载jdom.jar包。

    Sample1.java

     1 import java.util.*;
     2 import org.jdom.*;
     3 import org.jdom.input.SAXBuilder;
     4 
     5 
     6 public class Sample1 {
     7     public static void main(String[] args) throws Exception {
     8         SAXBuilder sb = new SAXBuilder();
     9 
    10         Document doc = sb.build(Sample1.class.getClassLoader()
    11                 .getResourceAsStream("test.xml")); // 构造文档对象
    12         Element root = doc.getRootElement(); // 获取根元素HD
    13         List list = root.getChildren("disk");// 取名字为disk的所有元素
    14         for (int i = 0; i < list.size(); i++) {
    15             Element element = (Element) list.get(i);
    16 
    17              String capacity=element.getChildText("capacity");//取disk子元素capacity的内容
    18              String directories=element.getChildText("directories");
    19              String files=element.getChildText("files"); 
    20              
    21              System.out.println("磁盘信息:");
    22              System.out.println("分区容量:"+capacity);
    23              System.out.println("目录数:"+directories);
    24              System.out.println("文件数:"+files);
    25              System.out.println("-----------------------------------");}
    26     }
    27 }

    test.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <HD>
      <disk name="C">
        <capacity>8G</capacity>
        <directories>200</directories>
        <files>1580</files>
      </disk>
    
      <disk name="D">
        <capacity>10G</capacity>
        <directories>500</directories>
        <files>3000</files>
      </disk>
    </HD> 


    ·解析结果

    磁盘信息:
    分区容量:8G
    目录数:200
    文件数:1580
    -----------------------------------
    磁盘信息:
    分区容量:10G
    目录数:500
    文件数:3000
    -----------------------------------

     结语:据说dom4j解析工具包更好用,有机会得试试~不过其原理想必都差不多!

  • 相关阅读:
    第90章、广播之一收听系统广播(从零开始学Android)
    第105章、蓝牙(从零开始学Android)
    实现自定义view(2):仿Android QQ多屏幕显示ListView的效果
    实现自定义view(1):可在全屏幕自由拖动的view
    Android异步处理四:AsyncTask的实现原理
    Android异步处理三:Handler+Looper+MessageQueue深入详解
    Android异步处理二:使用AsyncTask异步更新UI界面
    实体之间的关系主要有以下两种
    hibernate实体对象的三种状态?
    Session提供了两种方法加载数据,区别是什么?
  • 原文地址:https://www.cnblogs.com/SeaSky0606/p/4645914.html
Copyright © 2011-2022 走看看