⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dealxml.java

📁 使用java处理xml,另外,运行本程序还要加载几个包,有apche的,还有本身自带的, 主要尝试怎样对xml操作
💻 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 + -