import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
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.NodeList;
import org.xml.sax.SAXException;
public class DOMReadXml {
/**
* @param args
*/
public static void main(String[] args) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("C:\\scores.xml");
//展示XML
showMXL(doc);
//addXML(doc);
//Motify(doc);
saveXML(doc);
delete(doc);
System.out.println("修改后的代码!!!!!");
showMXL(doc);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//读取XML文档并显示
public static void showMXL(Document doc) {
NodeList studentList = doc.getElementsByTagName("student");
for(int i=0;i<studentList.getLength();i++){
if(!(studentList.item(i) instanceof Element)){
continue;
}
//获取元素节点
Element studentElement = (Element)studentList.item(i);
//获取属性
String id = studentElement.getAttribute("id");
//获取元素文本
String name = ((Element)studentElement.getElementsByTagName("name").item(0)).getFirstChild().getNodeValue();
String course = ((Element)studentElement.getElementsByTagName("course").item(0)).getFirstChild().getNodeValue();
String score = ((Element)studentElement.getElementsByTagName("score").item(0)).getFirstChild().getNodeValue();
System.out.println(id+"\t"+name+"\t"+course+"\t"+score);
}
}
//添加XML并保存
public static void addXML(Document doc){
Element nameElement = doc.createElement("name");
Element courseElement = doc.createElement("course");
Element scoreElement = doc.createElement("score");
nameElement.setTextContent("历史");
courseElement.setTextContent("C#");
scoreElement.setTextContent("100");
Element student = doc.createElement("student");
student.setAttribute("id", "3");
student.appendChild(nameElement);
student.appendChild(courseElement);
student.appendChild(scoreElement);
doc.getChildNodes().item(0).appendChild(student);
//保存XML
saveXML(doc);
}
//保存XML
private static void saveXML(Document doc)
throws TransformerFactoryConfigurationError {
TransformerFactory dff = TransformerFactory.newInstance();
try {
Transformer tf = dff.newTransformer();
DOMSource ds = new DOMSource(doc);
tf.setOutputProperty(OutputKeys.ENCODING,"GB2312");
StreamResult result = new StreamResult("C:\\scores.xml");
tf.transform(ds, result);
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//修改XML文档
private static void Motify(Document doc){
//找到节点列表
NodeList studentList = doc.getElementsByTagName("student");
for(int i=0;i<studentList.getLength();i++){
if(!(studentList.item(i) instanceof Element)){
continue;
}
Element studentElement = (Element)studentList.item(i);
//获取元素的id属性
String id = studentElement.getAttribute("id");
if(id.equals("3")){
//设置属性
studentElement.setAttribute("id", "4");
//设置元素的另一个子节点
studentElement.getElementsByTagName("name").item(0).setTextContent("张三");
break;
}
}
}
//实现XML节点的删除
private static void delete(Document doc){
NodeList studentList = doc.getElementsByTagName("student");
for(int i=0;i<studentList.getLength();i++){
if(!(studentList.item(i) instanceof Element)){
continue;
}
Element studentElement = (Element)studentList.item(i);
String id = studentElement.getAttribute("id");
if(id.equals("3")){
//找到需要删除节点的父节点,然后移除需要删除的节点
studentElement.getParentNode().removeChild(studentElement);
break;
}
}
}
}
所对应的XML文件为:
<?xml version="1.0" encoding="gb2312" ?>
<scores>
<student id="1">
<name>王同</name>
<course>java</course>
<score>89</score>
</student>
<student id="2">
<name>李佳</name>
<course>sql</course>
<score>88</score>
</student>
</scores>