要求如下:
<?xml version="1.0" encoding="GB2312"?>
<地址簿>
<客户 性别="男">
<姓名>吴孟达</姓名>
<电子邮件>wuwengda@123.com</电子邮件>
</客户>
<客户 性别="女">
<姓名>白晶晶</姓名>
<电子邮件>baijingjing@345.com</电子邮件>
</客户>
</地址簿>
①使用JDOM遍历这个XML文件,输出所有客户的信息,每个客户信息占一行,注意性别也要显示出来。
②把客户吴孟达的电子邮件删掉,注意是整个元素删掉,不是只清除内容,然后将更改后的文件保存到customs1.xml。
③把客户白晶晶的姓名改为白静静,将文件保存到更改后的customs2.xml。
④在customs.xml的文件中增加一个客户信息,信息如下:姓名:张三;性别:男;电子邮件:zhangsan@gmail.com
首先按要求建立customer.xml
<?xml version="1.0" encoding="GBK"?>
<地址簿>
<客户 性别="男">
<姓名>吴孟达</姓名>
<电子邮件>wuwengda@123.com</电子邮件>
</客户>
<客户 性别="女">
<姓名>白晶晶</姓名>
<电子邮件>baijingjing@345.com</电子邮件>
</客户>
</地址簿>
使用jdom对customer.xml按要求进行操做:
import org.jdom2.*;
import org.jdom2.input.*;
import org.jdom2.adapters.*;
import java.util.*;
import java.io.*;
import org.jdom2.output.*;
public class run
{
public static void main(String [] args)
{
try
{
run r = new run();
r.showMessage();
r.delete();
r.alertName();
r.add();
}
catch(Exception e)
{
System.out.println("运行错误");
}
}
public void showMessage() throws Exception
{
Document doc = new Document();
SAXBuilder saxb = new SAXBuilder();
doc = saxb.build("customer.xml");
Element e = doc.getRootElement();
List list = e.getChildren();
Element name;
Element email;
Element person;
for(int i=0 ; i<list.size() ; i++)
{
person = (Element)list.get(i);
System.out.println("显示第" + (i+1) + "个客户信息:");
String a = person.getAttribute("性别").getValue();
name = person.getChildren().get(0);
email = person.getChildren().get(1);
String str_name = name.getText();
String str_email = email.getText();
System.out.println("性别:" + a + " 姓名:" + str_name + " email:" + str_email);
}
}
public void delete() throws Exception
{
Document doc = new Document();
SAXBuilder saxb = new SAXBuilder();
doc = saxb.build("customer.xml");
Element e = doc.getRootElement();
List list = e.getChildren();
for(int i=0 ; i<list.size() ; i++)
{
e = (Element)list.get(i);
if("吴孟达".equals(e.getChildren().get(0).getText())) //下标从0开始
{
Element a = doc.getRootElement().getChildren().get(i).getChildren().get(1);
e.removeContent(a);
}
}
//写入xml
XMLOutputter outputter = new XMLOutputter();
Format format = outputter.getFormat();
format.setEncoding("GBK");
format.setIndent(" ");
outputter.setFormat(format);
outputter.output(doc , new FileWriter("F:\\HelloWorld\\JavaEE\\Code\\shangJiShiYan\\shiYanEr\\diErTi\\code\\my.xml"));
System.out.println("元素以删除");
}
public void alertName() throws Exception
{
Document doc = new Document();
SAXBuilder saxb = new SAXBuilder();
doc = saxb.build("customer.xml");
Element e = doc.getRootElement();
List list = e.getChildren();
for(int i=0 ; i<list.size() ; i++)
{
e = (Element)list.get(i);
if("白晶晶".equals(e.getChildren().get(0).getText())) //下标从0开始
{
e.getChildren().get(0).setText("白静静");
}
}
//写入xml
XMLOutputter outputter = new XMLOutputter();
Format format = outputter.getFormat();
format.setEncoding("GBK");
format.setIndent(" ");
outputter.setFormat(format);
outputter.output(doc , new FileWriter("F:\\HelloWorld\\JavaEE\\Code\\shangJiShiYan\\shiYanEr\\diErTi\\code\\白静静.xml"));
System.out.println("白静静姓名已更改");
}
public void add() throws Exception
{
Element e = new Element("客户");
e.setAttribute("性别" , "男");
Element name = new Element("姓名"); //创建的元素名就是姓名
name.setText("张三");
e.addContent(name);
Element email = new Element("电子邮件");
email.setText("④zhangsan@gmail.com");
e.addContent(email);
Document doc = new Document();
SAXBuilder saxb = new SAXBuilder();
doc = saxb.build("customer.xml");
Element root = doc.getRootElement();
root.addContent(e);
//写入xml
XMLOutputter outputter = new XMLOutputter();
Format format = outputter.getFormat();
format.setEncoding("GBK");
format.setIndent(" ");
outputter.setFormat(format);
outputter.output(doc , new FileWriter("F:\\HelloWorld\\JavaEE\\Code\\shangJiShiYan\\shiYanEr\\diErTi\\code\\add.xml"));
System.out.println("元素已添加,在add.xml文件里查看");
}
}
这里需要注意,下载jdom包后,将其解压,得到 jdom-2.0.6(类似的)jar包,然后将jar包解压.的到的org目录就是import语句里的org包了.
然后就可以使用导入语句导入了.