第六章 XML

1,编写XML文档,添加两个学员的成绩,包括学生id,姓名,分数,学科。
<?xml version="1.0" encoding="UTF-8"?>
<scores>
   <student id="1">
      <name>郭振</name>
      <course>JAVA</course>
      <score>60</score>
   </student>
   <student id="2">
      <name>段海峰</name>
      <course>JAVA</course>
      <score>78</score>
   </student>
</scores>

2,使用DOM解析第一题编写的XML文档,输出所有学员信息。

package com.bdqn.demo;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Student {
	 
	public static void main(String[] args) {
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			try {
				DocumentBuilder builder = factory.newDocumentBuilder();
				Document doc =builder.parse("学员信息.xml");
				NodeList list = doc.getElementsByTagName("student");			
				for (int i = 0; i < list.getLength(); i++) {
					Node stu = list.item(i);
					Element element = (Element) stu;
					String num = element.getAttribute("id");
					System.out.println("编号:"+num);
					NodeList listName = element.getElementsByTagName("name");
					NodeList listCourse = element.getElementsByTagName("course");
					NodeList listScore = element.getElementsByTagName("score");
					for (int j = 0; j < listScore.getLength(); j++) {
						Element childName = (Element) listName.item(j);
						Element childCourse = (Element) listCourse.item(j);
						Element childScore = (Element) listScore.item(j);
						String name = childName.getFirstChild().getNodeValue();
						String course = childCourse.getFirstChild().getNodeValue();
						String score = childScore.getFirstChild().getNodeValue();
						System.out.println("姓名:"+name+"\n课程:"+course+"\n分数:"+score+"\n");
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}		
		}

	}

3,使用DOM对简答题1保存成绩信息的XML删除ID为1的成绩,修改ID为2的成绩为60.添加一个学生的成绩

package com.bdqn.demo;


import java.io.FileOutputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
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;

public class Student{
	Document doc = null;

	public static void main(String[] args) {
		Student stu = new Student();
		stu.load();
		stu.delete();
		stu.change();
		stu.save();
		stu.add();
		stu.save();
	}

	public void load() {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder db = dbf.newDocumentBuilder();
			doc = db.parse("学员信息.xml");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void delete() {
		NodeList list = doc.getElementsByTagName("student");
		for (int i = 0; i < list.getLength(); i++) {
			Node stu = list.item(i);
			Element element = (Element) stu;
			String str = element.getAttribute("id");
			if (str.equals("1")) {
				element.getParentNode().removeChild(element);
			}
		}
	}

	public void save() {
		TransformerFactory tff = TransformerFactory.newInstance();
		try {
			Transformer tf = tff.newTransformer();
			DOMSource doms = new DOMSource(doc);
			tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			StreamResult result = new StreamResult(new FileOutputStream("学员信息.xml"));
			tf.transform(doms, result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void change() {
		NodeList nl = doc.getElementsByTagName("student");
		for (int i = 0; i < nl.getLength(); i++) {
			Node stu = nl.item(i);
			Element element = (Element) stu;
			String str = element.getAttribute("id");
			if (str.equals("2")) {
				NodeList listScore = element.getElementsByTagName("score");
				Element getScore = (Element) listScore.item(0);
				getScore.setTextContent("60分");
			}
		}
	}
	public void add() {
		Element name = doc.createElement("name");
		name.setTextContent("黄志豪");
		Element course = doc.createElement("course");
		course.setTextContent("JAVA");
		Element score = doc.createElement("score");
		score.setTextContent("59分");
		Element student = doc.createElement("student");
		student.setAttribute("id", "3");
		student.appendChild(name);
		student.appendChild(course);
		student.appendChild(score);
		Element sorces = (Element) doc.getElementsByTagName("sorces").item(0);
		sorces.appendChild(student);
	}

}
4,使用DOM4J解析简答题1描述成绩信息的XML,输出成绩信息。
import java.util.Iterator;


import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class DOM4JScore {
	public static void main(String[] args) {
		SAXReader reader = new SAXReader();
		Document doc = null;
		try {
			doc = reader.read("Scores.xml");
			Element root = doc.getRootElement();
			for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {
				Element element = (Element) iterator.next();
				String score = element.elementText("score");
				System.out.println(score);
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/jiangmye/article/details/80499933