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>