用Java写入XML

来源:互联网 发布:小米ai音箱和网络音响 编辑:程序博客网 时间:2024/06/06 03:37

当我们需要将信息写入XML保存起来(即写入对应的标签里),以便后续使用时,写了一个方便使用的类。

1. 假设我们的要保存的XML格式如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><users>    <user>        <id>0001</id>        <name>心晴儿</name>        <gender>f</gender>        <imgurl>http://XXXXXXX</imgurl>    </user></users>


 

2. 写入XML的类:

 

package weibo.spider;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.dom4j.io.XMLWriter;import org.w3c.dom.Document;import org.w3c.dom.Element;import weibo.dao.RelationDAO;import weibo.dao.UserDAO;import weibo.pojo.RelationPOJO;import weibo.pojo.UserPOJO;public class DataExport {private String fileName;private Document document;public DataExport(String fileName){this.fileName = fileName;createXmlDocument();}private void createXmlDocument(){try{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();document = builder.newDocument();}catch(ParserConfigurationException e){e.printStackTrace();}}/** * 创建根节点 * @param name 根节点名称 * @return */public Element createRootElement(String name) {Element root = document.createElement(name);document.appendChild(root);return root;}/** * 创建子节点 * @param parent 父节点 * @param tagName 节点名称 * @param text 节点内容 * @return */public Element createElement(Element parent, String tagName, String text) {Element element = document.createElement(tagName);if (text != null && text.length() > 0) {element.setTextContent(text);}parent.appendChild(element);return element;}/** * 保存文件 * @throws Exception */public void toSave() throws Exception {TransformerFactory factory = TransformerFactory.newInstance();factory.setAttribute("indent-number", new Integer(4));// 设置缩进长度为4Transformer transformer = factory.newTransformer();transformer.setOutputProperty(OutputKeys.INDENT, "yes");// 设置自动换行DOMSource source = new DOMSource(document);transformer.transform(source, new StreamResult(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName),"UTF-8"))));}public void exportRelations(){RelationDAO dao = new RelationDAO();ArrayList<RelationPOJO> list = (ArrayList<RelationPOJO>) dao.findAll();System.out.println(list.size());File file = new File(fileName);try {BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));for(RelationPOJO r : list)writer.write(r.getUid() +" "+r.getFriendid()+"\n");writer.close();} catch (IOException e) {e.printStackTrace();}}public void exportUsers(){UserDAO dao = new UserDAO();Element root = createRootElement("users");ArrayList<UserPOJO> list = (ArrayList<UserPOJO>) dao.findAll();System.out.println(list.size());int count = 0;for(UserPOJO u : list){Element ele = createElement(root,"user","");createElement(ele,"id",u.getId().toString());createElement(ele,"name",u.getUsername());createElement(ele,"gender",u.getGender());createElement(ele,"imgurl",u.getImageurl());if(count++ > 100)break;}try {toSave();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {DataExport export = new DataExport("F://users.txt");export.exportUsers();//export.exportRelations();}}

原创粉丝点击