JDOM入门(转)

1) JDOM的组成.

org.JDOM
org.JDOM.input
org.JDOM.output
org.JDOM.adapters
org.JDOM.transform
我们可以从字面上去理解每个包的作用. JDOM包含以下类型
Attribute
CDATA
Coment
DocType
Document
Element
EntityRef
Namespace
ProscessingInstruction
Text
在开发jdom应用程序中我们所用的所有类型....就这几个类型很简单就可理解.下面介绍每个开发包的作用:
* org.JDOM.transform
在涉及xslt格式转换时应使用下面的2个类
JDOMSource
JDOMResult

* org.JDOM.input
输入类,一般用于文档的创建工作
SAXBuilder
DOMBuilder
ResultSetBuilder
注:jdom的输入源非常广泛,可以是字符串,可以是其它的XML工具生成的XML文件。
* org.JDOM.output
输出类,用于文档转换输出
XMLOutputter
SAXOutputter
DomOutputter
JTreeOutputter
从以上输出类可以看出jdom可以输出常用类型号XML文件
下面是一个读xml,一个创建XML的两个例程
==================

import org.jdom.*;
import org.jdom.input.*;
import java.io.FileInputStream;
import java.util.*;
public class JDomXMLProcess{

public static void main(String[] args) throws Exception{
SAXBuilder sb=new SAXBuilder();//建立构造器
Document doc=sb.build(new FileInputStream("E:\\eclipse\\myworkspace\\base\\src\\jdom\\forTest.xml"));
Element root=doc.getRootElement(); //获得根结点

List list=root.getChildren(); //将所有根结点下的子结点放入list
for(int i=0;i<list.size();i++){
System.out.println("----------------------");
Element item=(Element)list.get(i); //获得实体结体

//用于获得属性
String name=item.getAttributeValue("id");
System.out.println("Name---->"+name);
//获得了节点

String temptitle=item.getChildText("title");
System.out.println("测试"+temptitle); //使用item获得子节点属性

Element sub=item.getChild("title");
String title=sub.getText();
System.out.println("title---->"+title);

Element sub2=item.getChild("email");
String email=sub2.getText();
System.out.println("email-->"+email);

Element sub3=item.getChild("content");
String content=sub3.getValue();
System.out.println("content-->"+content);

}

}
}
-----------以上代码要读的xml文件内容如下----------------------------
<?xml version="1.0" encoding="gb2312"?>
<messages>
<message id="student1">i
<title>title1</title>
<content>content1</content>
<email>st1@126.com</email>
</message>
<message id="student2">
<title>title2</title>
<content>content2</content>
<email>st2@126.com</email>
</message>
</messages>
--------------------------------------------------------------------------------------------
创建一个xml文件
----------------
/*
* Created on 2000-1-1
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package jdom;
import java.io.FileWriter;

import org.jdom.*;
import org.jdom.adapters.*;
import org.jdom.adapters.*;
import org.jdom.input.*;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import java.io.*;
/**
* @author *
* TODO 学习用例 ,pdw2009@tom.com
*
*/
public class createonexml {

public static void main(String[] args)throws Exception {
Element carElement=new Element("car");
Document mydoc=new Document(carElement);
//carElement.addAttribute(new Attribute("vin", "123fhg5869705iop90"));

//添加内容
carElement.addContent(new Element("make").addContent("DF"));
carElement.addContent(new Element("year").addContent("1997"));
carElement.addContent(new Element("color").addContent("green"));
carElement.addContent(new Element("listenr").addContent("SSDDDBBA"));
//添加注解
carElement.addContent(new Comment("描述一辆车"));

//输出到文件
XMLOutputter outer=new XMLOutputter();
FileWriter fw=new FileWriter("E:\\eclipse\\myworkspace\\base\\src\\jdom\\car.xml");
Format fm=Format.getPrettyFormat(); //设定XML文件的输出格式
fm.setEncoding("GBK");

outer.setFormat(fm);
outer.output(mydoc,fw);
outer.output(mydoc,System.out);
fw.close();
}
}
------------------以上代码生成的xml文件内容如下---------------
<?xml version="1.0" encoding="GBK"?>
<car>
<make>DF</make>
<year>1997</year>
<color>green</color>
<listenr>SSDDDBBA</listenr>
<!--描述一辆车-->
</car>
---------------------------------------------------------------------------------------
在jdom 1.0版本里输出xml文档时,我们必须定义该文档的格式,如xml文件的编辑格式,输出的xml文档是否换行,是否删除我作的空格,等。所以在输出 xml文档时需定义一个Format对象类,并给相关属性赋值,然后设定XMLOutputter所用到的格式类,outter.setFormat ()。


详细说明请参考jdom API文档

1

lonely wolf

1 将一个xml文件输出到一个字符串对象里
XMLOutputter outputter = new XMLOutputter();
Element element = new Element("Greeting");
String hello = outputter.outputString(element);

2 一个list转换成一个xml文件。。虽然其list中的字段是固定了,我们也可以修改类集转换代码,以实现动态字段的转换

package jdom;
import java.io.FileWriter;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;

/**
* @author pdw2009@tom.com
* TODO 将一个List对象,转换一个XML文件
*/
class Person{
private String ID; //学号
private String name; //姓名
private String addr; //地址
private String tel; //联系电话
private String email; //email地址
/**
* @return Returns the addr.
*/
public String getAddr() {
return addr;
}
/**
* @param addr The addr to set.
*/
public void setAddr(String addr) {
this.addr = addr;
}
/**
* @return Returns the iD.
*/
public String getID() {
return ID;
}
/**
* @param id The iD to set.
*/
public void setID(String id) {
ID = id;
}
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
/**
* @param name The name to set.
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Returns the tel.
*/
public String getTel() {
return tel;
}
/**
* @param tel The tel to set.
*/
public void setTel(String tel) {
this.tel = tel;
}
/**
* @return Returns the email.
*/
public String getEmail() {
return email;
}
/**
* @param email The email to set.
*/
public void setEmail(String email) {
this.email = email;
}
}

public class listtoxml {
public List creatlist(){
List list=new ArrayList();
Person person=new Person();
person.setAddr("广西合浦");
person.setID("1048");
person.setName("hfggf");
person.setTel("138777778888");
person.setEmail("pdw2009@tom.com");
list.add(person);

person.setAddr("广西南宁");
person.setID("1036");
person.setName("蠢卢");
person.setTel("1387778888");
person.setEmail("XXXXX@tom.com");
list.add(person);
return list;
}
public static void main(String[] args) throws Exception {
listtoxml lx=new listtoxml();
List list=lx.creatlist(); //生成Person类的对象list
Element root=new Element("Student");//根条目;
Iterator it=list.iterator(); //获取iterator接口
while(it.hasNext()){
Person p=(Person)it.next();
Element person=new Element("Person");
person.setAttribute("ID",p.getID());
root.addContent(person); //在根元素下,添加一个person子元素

Element ele=new Element("Name");
ele.setText(p.getName());
person.addContent(ele); //在person元素下添加一个name的子元素

Element addr=new Element("Address");
addr.setText(p.getAddr());
person.addContent(addr);

Element tel=new Element("tel");
tel.setText(p.getTel());
person.addContent(tel);

Element email=new Element("email");
email.setText(p.getEmail());
person.addContent(email);

}
Document doc=new Document(root);
XMLOutputter outer=new XMLOutputter();
Format fm=Format.getPrettyFormat();
fm.setEncoding("GBK");
outer.setFormat(fm);
FileWriter fw=new FileWriter("E:\\eclipse\\myworkspace\\base\\src\\jdom\\listtoxml.xml");
outer.output(doc,fw); //只需要把自己定义的FileWriter替换掉System.out就可以确定xml文件的输出了
}
}


仅供参与,只需要添加你的jdbc连接便于工作可实现,从数据库里取出记录并生
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值