在项目中使用jdom,由于项目中频繁使用,所以做下记录

本文详细介绍了JDOM API的基本概念及其在处理XML文档时提供的高效工具。重点阐述了JDOM的主要类库,包括Document、DOMBuilder、ProcessingInstruction、Element、Comment、XMLOutputter及DocType等,展示了如何利用这些类进行XML文件的读取、构建、处理和输出。同时,通过示例代码演示了如何通过JDOM API实现对XML文档的解析与数据提取,使得XML文档操作变得简单易行。

 Jdom 是用Java 语言读、写、操作XML 的新API 函数。

 

Jdom 是一个开源的api,它以直接易懂的方式向java 程序员描述XML 文档和文档的内
容。就象名字揭示的那样,Jdom 是为java  优化的。为使用 XML 文档提供一个低消耗的方
法。Jdom 的使用者可以不必掌握太多的XML 的知识就可以完成想要的操作。

 

 

JDOM 主要类库
1、  Document 类:
     Document  类定义了一个 XML  文件的各项行为,用户可以通过它所提供的方法来存取
根元素以及存取处理命令/文件层次的相关信息。

2、  DOMBuilder 类
     DOMBuilder 类用来建立一个JDOM 结构树

3、  ProcessingInstruction 类
     ProcessingInstruction 类定义了一个XML 处理命令的各项行为,用户可以通过它所提供
的方法得到处理命令的对象以及数据。可以通过字符串来存取数据,只要许可也可以通过“名
称/数值”的方式来提取数据。

4、  Element 类:
     Element 类定义了一个 XML 元素的各项行为,用户可以通过它所提供的方法得到元素
的文字内容、属性值以及子节点。

5、  Comment 类
     Comment 类定义了一个XML 注释的所有行为。

6、  XMLOutputter 类
     XMLOutputter 类回将一个 JDOM 结构树格式化为一个XML 文件,并且以字符串流的 方式加以输出

7、  DocType
     DocType 类代表一个XML 文件的DOCTYPE 声明。

/**
  * @author lnman
  *
  * To change the template for this generated type comment go to
  * Window>Preferences>Java>Code Generation>Code and Comments
  */

import org.jdom.input.*;
import org.jdom.*;
import java.util.*;
public class ReadXML
{

     public static void main(String[] args) throws Exception
     {
           //实例化一 SAXBuilder 对象builder,用来建立JDOM 结构树
           SAXBuilder builder = new SAXBuilder();

           //使用builder 方法,在现有文件基础上,建立一个XML 文件
           Document read_doc = builder.build("studentinfo.xml");

           //从Document 中读取一个根元素
           Element stu = read_doc.getRootElement();

           //得到根元素下的自元素 student,返回类型为一List 对象
           List list = stu.getChildren("student");

           for(int i = 0;i < list.size();i++)
           {
                //取处一 student 元素
                Element e = (Element)list.get(i);
                //从student 元素下,读出其子元素number,name,age
                String str_number = e.getChildText("number");
                String str_name = e.getChildText("name");
                String str_age = e.getChildText("age");

                System.out.println("---------STUDENT--------------");
                System.out.println("NUMBER:" + str_number);
                System.out.println("NAME:" + str_name);
                System.out.println("AGE:" + str_age);
                System.out.println("------------------------------");
                System.out.println();
           }
     }

、、、、也可以一下方式

 public static List xml2foodBill(String xmlDoc) {
  StringReader read = new StringReader(xmlDoc);
  // 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
  InputSource source = new InputSource(read);
  // 创建一个新的SAXBuilder
  SAXBuilder sb = new SAXBuilder();

  ArrayList<FoodBill> foodBills = null;
  // 如果xmlDoc 不为空,就初始化foodBills数组
  if (!xmlDoc.equals(""))
   foodBills = new ArrayList<FoodBill>();
  FoodBill foodBill = new FoodBill();
  try {
   // 通过输入源构造一个Document
   Document doc = sb.build(source);
   // 取的根元素
   Element root = doc.getRootElement();
   
   List list = root.getChildren();
   Element e = null;
   for (int i = 0; i < list.size(); i++) {
    e = (Element) list.get(i);
    foodBill.setFoodCode(e.getChildText("foodCode"));
    foodBill.setFoodname(e.getChildText("foodname"));
    foodBill.setQuantity(Double.parseDouble(e
      .getChildText("quantity")));
    foodBill.setBarcode(e.getChildText("barcode"));
    foodBill.setCancelNum(e.getChildText("cancelNum"));
    foodBill.setCancelReason(e.getChildText("cancelReason"));
    foodBill.setOperandis(e.getChildText("operandis"));
    foodBill.setPaidType(e.getChildText("paidType"));
    foodBill.setTastes(e.getChildText("tastes"));
    foodBills.add(foodBill);
   }
   
  } catch (JDOMException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return foodBills;

 }

 

当然在android下解析又有稍微的差别,找一个合适的时间,再整理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值