您的位置:首页 > 其它

jdom操作Xml示例

2011-06-12 13:42 246 查看
import java.io.FileInputStream;
import java.io.FileOutputStream;

import java.util.List;

import org.jdom.xpath.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.*;

/**
* 使用JDOM操作XML文件示例
* 步骤:
* 1、去www.jdom.org下载jdom 1.0,也只有这个版本,因为作为觉得简单的才是最好的,除非XML更改才会对程序更行更改
* 2、准备XML文件,将放在指定的目录下:
* <?xml version="1.0" encoding="UTF-8" ?>
<student>
<user>
<id>1</id>
<name>test_boy</name>
<age>23</age>
<sex>boy</sex>
</user>
<user>
<id>2</id>
<name>test_girl</name>
<age>20</age>
<sex>girl</sex>
</user>
</student>
× 3、将代码放进去,直接运行并查看结果,就OK了
*/
public class JDomTest
{
String xmlPath = "e://Mickey//test.xml";//原文件,必须存在
String xmlPath_out = "e://Mickey//test1.xml";//目标文件,可不存在
//建立SAXBuilder对象
SAXBuilder builder = new SAXBuilder();
//建立文档对象,也就是XML文件对象
Document document;
public JDomTest()
{
try
{
//用XMLBuilder对象建立即build一个文件输入流,成为该文档对象
document = builder.build(new FileInputStream(xmlPath));
}
catch (Exception e)
{
e.printStackTrace();
return;
}
}
public void delByID(String id)
{

}
public static void main(String[] args)
{
JDomTest jDomTest=new JDomTest();
//获得文档的根元素,这里就是获得"student"
Element root = jDomTest.document.getRootElement();
System.out.println("root element is:" + root);
XPath xPath;
//取得根原下面所有字根,将放于List集合中
try
{
//List l=XPath.selectNodes(root,"");
//System.out.println("查找结果:"+l.size());
//用这个XPath的时候,还不知道还要把JDom/lib下面全部的类导入
//还编辑了不少时间,这是JDom和其它的jar文件不一样的地方
XPath servletPath = XPath.newInstance("/student/user/id[text()='1']");//查找id=1的是不是存在
List l = servletPath.selectNodes(jDomTest.document);
System.out.println("查找结果:"+l.size());
for(int i=0;i<l.size();i++)
{
Element e=(Element)l.get(i);
String id=e.getText();
System.out.println("id:"+id);
}
}
catch (JDOMException e)
{
e.printStackTrace();
}
List list = root.getChildren();
for (int i = 0; i < list.size(); i++)
{
System.out.println("XXX");
StringBuffer buf = new StringBuffer();
//取得当前第i个元素,这里指的“二级根”
Element e = (Element) list.get(i);

Attribute attribute=new Attribute("Ok","yes");
e.setAttribute(attribute);
//取得对应的“二级根”面的对应的元素名
Element e_id = e.getChild("id");
//取得对应的值
String id = e_id.getText();
Element e_name = e.getChild("name");
String name = e_name.getText();
Element e_age = e.getChild("age");
String age = e_age.getText();
Element e_sex = e.getChild("sex");
String sex = e_sex.getText();
//增加一个major项
Element e_add=new Element("major");
//赋值
e_add.setText("Computer");
//加到“二级根”下
e.addContent(e_add);

buf.append("id:" + id).append(" name:" + name).append(" age:" +
age).append(" sex:" +
sex);
System.out.println(buf);
//这里删除一个Content后,此时将不再进行第二个循环,运行完该循环的最后一条语句直接通出
root.removeContent(e);
System.out.println("XXX");
}
//增加一个“二级根”,并赋值
Element oneChild=new Element("user");
//增加一个属性
Attribute a=new Attribute("ComeFrom","BeiJing");
oneChild.setAttribute(a);
root.addContent(oneChild);
Element e_id = new Element("id");
e_id.setText("3");
//取得对应的值
Element e_name = new Element("name");
e_name.setText("temp");
Element e_age = new Element("age");
e_age.setText("30");
Element e_sex = new Element("sex");
e_sex.setText("girl");
oneChild.addContent(e_id);
oneChild.addContent(e_name);
oneChild.addContent(e_age);
oneChild.addContent(e_sex);

//输入出当前读入的XML文件到另一个文件中
XMLOutputter out = new XMLOutputter();
try
{
//建立文件输出流,将读入的文件,定到目标文件中去
out.output(jDomTest.document, new FileOutputStream(jDomTest.xmlPath_out));
}
catch (Exception e)
{
e.printStackTrace();
}
System.exit(0);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: