Xml文件的读取与写入 java

1.读取

所需jar包dom4j-1.6.1.jar

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.Iterator;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

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


public class ObjectToXmlStr {
        //组成xml文件格式,并用CovertToXml中的covertToXml写入本地文件
	public String objectToXml(List<User> u) {
		try {
			JAXBContext jct = JAXBContext.newInstance(Department.class,User.class);
			Marshaller marshaller = jct.createMarshaller();
			Department d = new Department();
			d.setDepartName("erbu");
			d.setDepartUserList(u);
			marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
			marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
			marshaller.marshal(d, System.out);
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			marshaller.marshal(d, baos);
			String bb = new String(baos.toByteArray());
			System.out.println(bb);
			ConvertToXml ctx = new ConvertToXml();    
			ctx.convertToXml(d, "E:/User.xml");
		} catch (JAXBException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
//读取xml文件信息public void readCml(String path) { try { File f = new File("E:\\User.xml"); //获取文件路径,应该用传过来的参数path,本地文件测试 SAXReader reader = new SAXReader(); Document doc = reader.read(f); Element root = doc.getRootElement(); Element foo; for (Iterator i = root.elementIterator("User"); i.hasNext();) { foo = (Element) i.next(); System.out.print("姓名:" + foo.elementText("name")); System.out.println("密码:" + foo.elementText("pwd")) ; } } catch (Exception e) { e.printStackTrace(); } }}



import java.io.FileWriter;
import java.io.IOException;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;


public class ConvertToXml {
	public void convertToXml(Object u, String path) {
		try {
			JAXBContext context = JAXBContext.newInstance(u.getClass());
			Marshaller marshaller = context.createMarshaller();
			marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
			marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
			FileWriter fw = null;
			try {
				fw = new FileWriter(path);
			} catch (IOException e) {
				e.printStackTrace();
			}
			marshaller.marshal(u, fw);
		} catch (JAXBException e) {
			e.printStackTrace();
		}
		
	}
}


下面是Xml文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Department departName="erbu">
    <User id="2">
        <name>zhou</name>
        <pwd>124</pwd>
    </User>
    <User id="3">
        <name>wang</name>
        <pwd>434</pwd>
    </User>
    <User id="4">
        <name>chen</name>
        <pwd>d44</pwd>
    </User>
</Department>



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值