package util;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import entity.Employee;
public class XmlUtilW {
//读取xml里的emp所有数据
public List<Employee> readXml() throws Exception{
Document doc = getDocument();
Element e = doc.getDocumentElement();
List<Employee> list = new ArrayList<Employee>();
NodeList nodelist = e.getElementsByTagName("emp");
for(int i=0;i<nodelist.getLength();i++){
Node node = nodelist.item(i);
NodeList nodeList2 = node.getChildNodes();
Employee emp = new Employee();
for(int j=0;j<nodeList2.getLength();j++){
Node cn = nodeList2.item(j);
String nodestr = cn.getNodeName();
String tempstr = cn.getTextContent().trim();
if(nodestr.equals("id")){
emp.setId(Integer.parseInt(tempstr));
}
if(nodestr.equals("name")){
emp.setName(tempstr);
}
if(nodestr.equals("age")){
emp.setAge(Integer.parseInt(tempstr));
}
}
list.add(emp);
}
return list;
}
//增加一个emp
public void writeXml(Employee emp) throws Exception{
Document doc = getDocument();
Element root = doc.getDocumentElement();
Element empE = doc.createElement("emp");
Element id = doc.createElement("id");
id.setTextContent(emp.getId().toString());
Element name = doc.createElement("name");
name.setTextContent(emp.getName());
Element age = doc.createElement("age");
age.setTextContent(emp.getAge().toString());
root.appendChild(empE);
empE.appendChild(id);
empE.appendChild(name);
empE.appendChild(age);
saveXml(doc);
}
//删除xml里的一条emp记录
public void deleteXml(Integer id)throws Exception{
Document doc = getDocument();
Element e = doc.getDocumentElement();
NodeList nodelist = e.getElementsByTagName("emp");
for(int i=0;i<nodelist.getLength();i++){
Node node = nodelist.item(i);
NodeList cNL =node.getChildNodes();
for(int j=0;j<cNL.getLength();j++){
Node cn = cNL.item(j);
String tempstr = cn.getTextContent().trim();
if(tempstr.equals(id.toString())){
cn.getParentNode().getParentNode().removeChild(node);
break;
}
}
}
saveXml(doc);
}
//更新emp信息
public void updateXml(Employee emp) throws Exception{
Document doc = getDocument();
Element e = doc.getDocumentElement();
NodeList empsNodeList = e.getElementsByTagName("emp");
for(int i=0;i<empsNodeList.getLength();i++){
Node empNode = empsNodeList.item(i);
NodeList empEleList = empNode.getChildNodes();
for(int j=0;j<empEleList.getLength();j++){
Node node = empEleList.item(j);
String tempstr = node.getTextContent().trim();
if(tempstr.equals(emp.getId().toString())){
NodeList upEleList = empNode.getChildNodes();
for(int k=0;k<upEleList.getLength();k++){
Node upNode = upEleList.item(k);
String nodestr = upNode.getNodeName();
if(nodestr.equals("id")){
upNode.setTextContent(emp.getId().toString());
}
if(nodestr.equals("age")){
upNode.setTextContent(emp.getAge().toString());
}
if(nodestr.equals("name")){
upNode.setTextContent(emp.getName());
}
}
}
}
saveXml(doc);
}
}
// 根据id找到对应的emp
public Employee findById(Integer id){
try {
List<Employee> emps = readXml();
for (Employee employee : emps) {
if(employee.getId() == id){
return employee;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//保存xml
private void saveXml(Document document) throws Exception{
TransformerFactory tFactory = TransformerFactory.newInstance();// 创建XML输出工厂
Transformer transformer = tFactory.newTransformer();// 创建XML输出对象
DOMSource source = new DOMSource(document);// 源对象
String path = XmlUtilW.class.getClassLoader().getResource("employee.xml").getPath();
// String path = "D:/MyEclipse7/workspace/.metadata/.plugins/com.genuitec.eclipse.easie.tomcat.myeclipse/tomcat/webapps/webxml/WEB-INF/classes/employee.xml";
StreamResult result = new StreamResult(new File(path));// 目标对象
transformer.transform(source, result);
}
private Document getDocument() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder parser = factory.newDocumentBuilder();
String path=XmlUtilW.class.getClassLoader().getResource("employee.xml").getPath();
// System.out.println("getDocument:" + path);
Document document = parser.parse(new File(path));
return document;
}
public static void main(String[] args) throws Exception {
// String path = XmlUtilW.class.getClassLoader().getResource("employee.xml").getPath();
XmlUtilW xmlUtil = new XmlUtilW();
//找出一个emp
// Employee employee1 = xmlUtil.findById(1);
// System.out.println(employee1.getId()+","+employee1.getName()+","+employee1.getAge());
// System.out.println("---------");
// 读取xml的所有emp
// List<Employee> emps = xmlUtil.readXml();
// for (Employee employee : emps) {
// System.out.println(employee.getId()+","+employee.getName()+","+employee.getAge());
// }
// 删除一个emp
// xmlUtil.deleteXml(3);
// 修改一个emp
// xmlUtil.updateXml(emp);
Employee emp = new Employee();
emp.setId(4);
emp.setAge(22);
emp.setName("abc");
// 写入一个emp
xmlUtil.writeXml(emp);
}
}
分享到:
相关推荐
- 如果XMLUtil是自定义的,那么它的具体功能和用法可能会根据开发者的需求而有所不同,例如处理特定的XML格式,或者优化性能。 4. **博文链接**: - 提供的博客链接(iteye.com)可能包含关于如何结合桌面应用与...
Flex网上书店 运行时 的 XMLUtil.class
XMLUtil 是一个基于Java的XML对象关系映射(ORM)工具包,它的主要目标是简化XML数据与Java对象之间的交互。ORM技术的核心理念是通过映射机制将数据库中的数据自动转化为对象,反之亦然,而XMLUtil则是在XML文档与...
XMLUtil.java,,这就是一小串代码,是一个配置文件,放在Java程序里面。
xml2bean
Java操作XML工具类XmlUtil详解 Java操作XML工具类XmlUtil是Java中一个非常重要的工具类,它提供了许多实用的方法来操作XML文件。在本文中,我们将详细介绍XmlUtil的使用方法和实现原理,希望能够为大家提供有价值的...
本教程将深入探讨Java如何处理XML文件,以"XmlUtil.zip"中的"XmlUtil.java"为例,讲解相关的Java XML处理技术。 首先,Java提供了DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API ...
整理了几个在DotNet2.0中C#开发常用的基础工具类,内容如下:StringUtil、ParseUtil、TypeUtil、ByteUtil、NumUtil、XmlUtil、RegexUtil、HashUtil、ColorUtil。
版本号执照: 核心: 序列化: Serialutil: 建立:介绍Gradle包装器验证: 该项目是与kotlin序列化兼容的跨平台XML序列化(包装)库。 它提供了针对Android,JVM和JS(Alpha质量)的功能它还提供序列化支持想要的...
根据xmlPath路径,找到对应的xml文件,进行解析!之前找了好多感觉和自己的需求不太一样,这个可以根据Xpath解析出来xml里所有的信息,十分好用 举个例子 xmlPath = "E://upload/xml/1580242.163.xml";...
xmlUtil.XmlTagAddData("config","admin","test","23"); //删除admin下的test节点 xmlUtil.XmlTagDelete("config","admin/test"); //获取admin下test节点的值 xmlUtil.XmlGetTagData("config","admin/test"); ...
Java开发中中经常使用的Java工具类分享,工作中用得上,直接拿来使用,不用重复造轮子。
微信JSAPI工具包