📄 dealxml.java
字号:
import java.io.*; //Java基础包,包含各种IO操作
import java.util.*; //Java基础包,包含各种标准数据结构操作
import javax.xml.parsers.*; //XML解析器接口
import org.w3c.dom.*; //XML的DOM实现
//import org.jaxen.*;
//import org.jdom.*;
//import org.jdom.input.*;
//import org.jdom.output.*;
//import org.dom4j.*;
//import org.dom4j.io.*;
import org.apache.crimson.tree.XmlDocument;
class DealXml {
public HashMap student_HashMap;// = new HashMap();//定义HashMap的实例变量
public Vector student_Vector;// = new Vector();//定义Vector的实例变量
private void readXML(String inFile) throws Exception {
//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce); //出异常时输出异常信息,然后退出,下同
System.exit(1);
}
Document doc = null;
try {
doc = db.parse(inFile);
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
//下面是解析XML的全过程,,先取根元素"studentset"
Element root = doc.getDocumentElement();
//取"student"元素列表
NodeList students = root.getElementsByTagName("student");
for (int i = 0; i < students.getLength(); i++) {
//依次取每个"student"元素
Element student = (Element) students.item(i);
//创建一个学生的Bean实例
StudentBean studentBean = new StudentBean();
NodeList ids = student.getElementsByTagName("id");
if (ids.getLength() == 1) {
Element e = (Element) ids.item(0);
Text t = (Text) e.getFirstChild();
studentBean.setId(t.getNodeValue());
}
//取"name"元素,下面类同
NodeList names = student.getElementsByTagName("name");
if (names.getLength() == 1) {
Element e = (Element) names.item(0);
Text t = (Text) e.getFirstChild();
studentBean.setName(t.getNodeValue());
}
NodeList ages = student.getElementsByTagName("age");
if (ages.getLength() == 1) {
Element e = (Element) ages.item(0);
Text t = (Text) e.getFirstChild();
studentBean.setAge(Integer.parseInt(t.getNodeValue()));
}
NodeList ids2 = student.getElementsByTagName("id");
if (ids2.getLength() == 1) {
//Element e = (Element) ids2.item(0);
//Text t = (Text) e.getFirstChild();
//把每个学生的JavaBean对象存放在HashMap对象中
student_HashMap.put(String.valueOf(i),
studentBean);
StudentBean s = (StudentBean)student_HashMap.get(String.valueOf(i));
System.out.println("===================S===::"+s.getId()+s.getName()+s.getAge());
System.out.println("!!!!!!!!!!!!the student=====!!!!!!!!!"+
student_HashMap.get(String.valueOf(i)));
}
//把每个学生的姓名顺序的存放在Vector对象中
student_Vector.add(studentBean);
}
}
private void writeXML(String outFile) throws Exception {
//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
System.exit(1);
}
Document doc = null;
doc = db.newDocument();
//下面是建立XML文档内容的过程,先建立根元素"studentset"
Element root = doc.createElement("studentset");
//根元素添加上文档
doc.appendChild(root);
//取学生信息的Bean列表
for (int i = 0; i < student_Vector.size(); i++) {
//依次取每个学生的信息
StudentBean StudentBean = (StudentBean) student_Vector.get(i);
//建立"学生"元素,添加到根元素
Element student = doc.createElement("student");
root.appendChild(student);
//建立"id"元素,添加到学生下面,下同
Element id = doc.createElement("id");
student.appendChild(id);
Text tId = doc.createTextNode(StudentBean.getId());
id.appendChild(tId);
Element name = doc.createElement("name");
student.appendChild(name);
Text tName = doc.createTextNode(StudentBean.getName());
name.appendChild(tName);
Element age = doc.createElement("age");
student.appendChild(age);
Text tAge = doc.createTextNode(String.valueOf(StudentBean.getAge()));
age.appendChild(tAge);
}
//把Vector内存放的内容写入到本地文件中
//把XML文档输出到指定的文件
FileOutputStream outStream = new FileOutputStream(outFile);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
((XmlDocument) doc).write(outWriter, "GB2312");
outWriter.close();
outStream.close();
}
/**
* @param age
* @param id
* @param name
* @param inFile
* @throws Exception
*/
private void addNote(int age,String id,String name,String inFile)throws Exception{
// StudentBean studentBean = new StudentBean();
// studentBean.setAge(age);
// studentBean.setId(id);
// studentBean.setName(name);
// student_Vector.add(studentBean);
// 为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce); //出异常时输出异常信息,然后退出,下同
System.exit(1);
}
Document doc = null;
try {
doc = db.parse(inFile);
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
//下面是解析XML的全过程,先取根元素"student"
Element root = doc.getDocumentElement();
// 增加一个2级节点student
// Element newStudentElement = root.getAttributeNode("student");
Element newStudentElement = doc.createElement("student");
root.appendChild(newStudentElement);
//建立"id"元素,添加到学生下面,下同
Element aid = doc.createElement("id");
newStudentElement.appendChild(aid);
Text tId = doc.createTextNode(id);
aid.appendChild(tId);
Element aname = doc.createElement("name");
newStudentElement.appendChild(aname);
Text tName = doc.createTextNode(name);
aname.appendChild(tName);
Element aage = doc.createElement("age");
newStudentElement.appendChild(aage);
Text tAge = doc.createTextNode(String.valueOf(age));
aage.appendChild(tAge);
//把XML文档输出到指定的文件
FileOutputStream outStream = new FileOutputStream(inFile);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
((XmlDocument) doc).write(outWriter, "GB2312");
outWriter.close();
outStream.close();
}
private void deleteNote(String inFile)throws Exception{
//没有加以判断是否存在要删除的结点,
//对于要删除的结点信息(例如:结点顺序)应该是未知的,已知的就一个主分键(id)
//当然ID还没有设定成主键
// if (arg<=student_Vector.size()||(student_Vector.size()>0))
// student_Vector.remove(arg);//删除一个
// else
// System.out.println("最后一个");
// 为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce); //出异常时输出异常信息,然后退出,下同
System.exit(1);
}
Document doc = null;
try {
doc = db.parse(inFile);
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
//下面是解析XML的全过程,先取根元素"student"
Element root = doc.getDocumentElement();
NodeList students = root.getElementsByTagName("student");
Element student = (Element) students.item(1);
NodeList ages = student.getElementsByTagName("age");
Node agee = (Node)ages.item(0);
agee.getParentNode().removeChild(agee);
// System.out.println(doc.getDocumentElement().getElementsByTagName("student").item(1));
//把XML文档输出到指定的文件
FileOutputStream outStream = new FileOutputStream(inFile);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
((XmlDocument) doc).write(outWriter, "GBK");
outWriter.close();
outStream.close();
// OutputFormat format = OutputFormat.createPrettyPrint();
// format.setEncoding("GB2312");
// XMLWriter writer = new XMLWriter(new FileWriter(filePath),format);
// writer.write(doc);
// writer.close();
//NodeList ss = root.getChildNodes();
//Node s = students.item(1);
//NodeList s1 = s.getChildNodes();
//s1.item(1).getParentNode().removeChild(s1.item(2));
//s.getAttributes().removeNamedItem("age");//removeChild(0);
//Element parentElement = (Element)doc.selectSingleNode(".\\studentset\student");
//Element childElement=parentElement.addElement(childElementName);
//childElement.setText(childElementValue);
//childElement.addAttribute(attribute,value);
//Node.getParent().remove(Node);
// NodeList dealStudent = root.getChildNodes();//doc.createElement("student");
//Node nod= dealStudent.
//nod.getParentNode().removeChild(nod);
}
public static void main(String[] args) throws Exception {
//建立测试实例
DealXml dealXml = new DealXml();
//int arg=0;
//int i=0;
//初始化向量列表
dealXml.student_Vector = new Vector();
dealXml.student_HashMap = new HashMap();
System.out.println("开始读student.xml文件");
dealXml.readXML(".\\src\\student.xml");
dealXml.addNote(20, "20070327", "我是新来的",".\\src\\student.xml");
//dealXml.writeXML(".\\src\\Outputadd.xml");
dealXml.deleteNote(".\\src\\student.xml");
dealXml.readXML(".\\src\\student.xml");
dealXml.writeXML(".\\src\\student.xml");
System.out.println("完成任务");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -