xml解析与将数据写到xml中

  • 解析(也就是读取)xml
  • 将数据写到xml中
  • Element类中,getName()获得标签,getText()获得值(也就是内容)
===========直接上代码了=============

解析xml(用的是Dom4j解析)
package com.xfonline;


import java.io.InputStream;
import java.util.List;


import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


class Address
{
private int zipCode;
private String desc;


public int getZipCode()
{
return zipCode;
}


public void setZipCode(int zipCode)
{
this.zipCode = zipCode;
}


public String getDesc()
{
return desc;
}


public void setDesc(String desc)
{
this.desc = desc;
}
}


class Student
{
private int stuNo;
private String stuName;
private int stuAge;
private Address address;


public int getStuNo()
{
return stuNo;
}


public void setStuNo(int stuNo)
{
this.stuNo = stuNo;
}


public String getStuName()
{
return stuName;
}


public void setStuName(String stuName)
{
this.stuName = stuName;
}


public int getStuAge()
{
return stuAge;
}


public void setStuAge(int stuAge)
{
this.stuAge = stuAge;
}


public Address getAddress()
{
return address;
}


public void setAddress(Address address)
{
this.address = address;
}
}


public class Demo
{
// 读取xml
public static void main(String args[]) throws Exception
{
Student stu=readStu();
System.out.println("======================");
}


public static Student readStu() throws Exception
{
Student stu = new Student();
// 1.获取SAXReader对象
SAXReader read = new SAXReader();
InputStream is = ClassLoader.getSystemResourceAsStream("student.xml");
// 2.生成doc对象
Document doc = read.read(is);
// 3.获取根节点 -student节点
Element root = doc.getRootElement();
// 4.获取子节点下面所有的儿子节点
List<Element> sons = root.elements();
// System.out.println(sons.size());
// 5.遍历所有的儿子
for (Element s : sons) {
if (s.getName().equals("stuNo")) {
stu.setStuNo(Integer.parseInt(s.getText()));
}
if (s.getName().equals("stuName")) {
stu.setStuName(s.getText());
}
if (s.getName().equals("stuAge")) {
stu.setStuAge(Integer.parseInt(s.getText()));
}
if (s.getName().equals("address")) {
// 继续遍历address的儿子
List<Element> addressson = s.elements();
Address ad = new Address();
for (Element t : addressson) {
if (t.getName().equals("zipCode")) {
ad.setZipCode(Integer.parseInt(t.getText()));
} else {
ad.setDesc(t.getText());
}
}
// 将Address设置给Student对象
stu.setAddress(ad);
}
}
return stu;
}

}


将数据写到xml中

package com.zrx;


import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;


import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;


public class WriteDemo {


public static void main(String[] args) throws Exception {
Employee e1 = new Employee(1001, "科比", 1000);
Employee e2 = new Employee(1002, "姚明", 1000);
Employee e3 = new Employee(1003, "詹姆斯", 1000);
Employee e4 = new Employee(1004, "邓肯", 1000);
List<Employee> list = new ArrayList<Employee>();
list.add(e1);
list.add(e2);
list.add(e3);
list.add(e4);
write(list);


}


public static void write(List<Employee> list) throws Exception {
// 创建doc对象
Document doc = DocumentHelper.createDocument();
// 加一个root(根节点)
Element root = doc.addElement("company");
// 添加根节点属性
root.addAttribute("name", "xfonline");
root.addAttribute("id", "xf_00001");


// 遍历。需要在根节点上面添加子节点
for (Employee em : list) {
// 加子节点
Element employee = root.addElement("employee");
// 加子节点属性
if (em.getName().equals("科比")) {
employee.addAttribute("depart", "技术部");
}
// 加子节点的子节点(id)
Element id = employee.addElement("id");
id.setText(String.valueOf(em.getId()));


// 加子节点的子节点(name)
Element name = employee.addElement("name");
name.setText(em.getName());


// 加子节点的子节点(salary)
Element salary = employee.addElement("salary");
salary.setText(String.valueOf(em.getSalary()));


}


// 将doc写入文件
// 设置输出的格式
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter w = new XMLWriter(new FileOutputStream(".\\src\\emp.xml"),
format);


w.write(doc);
w.flush();
w.close();


}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值