1、前面写的这个不能继续插入数据,今天补上,当文件不存在的时候就创建,存在就直接往里面添加数据。
2、代码如下:
package com.mqp.doc2xml;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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.omg.CORBA.Environment;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
/**
*
* 将配置中的数据保存在本地XML文件中
*
* @author Administrator
*
*/
// 使用Dom方式来保存数据
public class Doc2Xml {
public static boolean saveParam2Xml(String ip_value, String socket_value) {
// 文档生成器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 实例化文档生成器
try {
DocumentBuilder builder = factory.newDocumentBuilder();
File f = new File("../Test/xml/text.xml");
if (!f.exists()) {
System.out.println("=======");
f.createNewFile();
// 生成一个文档
Document document = builder.newDocument();
// 创建根节点
Element configs = document.createElement("configs");
// 创建XML文件所需的各种对象并序列化(元素)
Element config = document.createElement("config");// 创建元素节点
Element ip = document.createElement("ip");
Element socket = document.createElement("socket");
Text ip_text = document.createTextNode(ip_value);// 创建text文本
Text socket_text = document.createTextNode(socket_value);
ip.appendChild(ip_text);
socket.appendChild(socket_text);
config.appendChild(ip);
config.appendChild(socket);
configs.appendChild(config);
document.appendChild(configs);// 添加到文档中
// 调用方法,将文档写入xml文件中
return Doc2Xml.write2Xml(document, f);
} else {
// 解析文档
Document document = builder.parse(f);
Element configs = document.getDocumentElement();// 得到根节点,把后面创建的子节点加入这个跟节点中
// 创建XML文件所需的各种对象并序列化(元素)
Element config = document.createElement("config");// 创建元素节点
Element ip = document.createElement("ip");
Element socket = document.createElement("socket");
Text ip_text = document.createTextNode(ip_value);// 创建text
Text socket_text = document.createTextNode(socket_value);
ip.appendChild(ip_text);
socket.appendChild(socket_text);
config.appendChild(ip);
config.appendChild(socket);
configs.appendChild(config);// 添加到根节点中
// 调用方法,将文档写入xml文件中
return Doc2Xml.write2Xml(document, f);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public static boolean write2Xml(Document document, File file) {
// 创建转化工厂
TransformerFactory factory = TransformerFactory.newInstance();
// 创建转换实例
try {
Transformer transformer = factory.newTransformer();
// 将建立好的DOM放入DOM源中
DOMSource domSource = new DOMSource(document);
// 创建输出流
StreamResult result = new StreamResult(file);
// 开始转换
transformer.transform(domSource, result);
return true;
} catch (TransformerConfigurationException e) {
e.printStackTrace();
return false;
} catch (TransformerException e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] args) {
System.out.println(Doc2Xml.saveParam2Xml("10.1.23.2", "8888")
+ "----------");
}
}