1 package com.xml.zh;
2 import javax.xml.parsers.*;
3 import javax.xml.transform.Transformer;
4 import javax.xml.transform.TransformerConfigurationException;
5 import javax.xml.transform.TransformerFactory;
6 import javax.xml.transform.dom.DOMSource;
7 import javax.xml.transform.stream.StreamResult;
8
9 import org.w3c.dom.*;
10 public class XmlTest1{
11
12 /**
13 * 使用dom技术对xml进行解析
14 * @param args
15 * 从这里我发现: Node 是 Element, document的父类, Element类主要是
16 * 增加,删除,修改,返回 等。document 创建 xml中的对象
17 * 例:document.getElementById();方法。
18 */
19 public static void main(String[] args) throws Exception{
20 // TODO Auto-generated method stub
21 //创建一个documentBuilderFactory实例
22 DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
23 //创建一个documentBuilder
24 DocumentBuilder db=dbf.newDocumentBuilder();
25 //指定是那个xml文件
26 Document document = db.parse("src/class.xml");
27 //list(document);
28 //red(document);
29 update(document);
30 upda(document);
31 }
32 //修改
33 public static void update(Document doc){
34 //修改元素内容
35 Element ele = (Element)doc.getElementsByTagName("mingzi").item(0);
36 ele.setTextContent("xiaohai");
37
38 //修改属性
39 Element element = (Element)doc.getElementsByTagName("xuesheng").item(0);
40 element.setAttribute("sex", "nv");
41 }
42
43 //删除学生
44 public static void del(Document doc){
45 Node node = doc.getElementsByTagName("xuesheng").item(0);
46 //node.getParentNode().removeChild(node);
47 //删除属性
48 Element ele = (Element)node;
49 ele.removeAttribute("sex");
50 }
51
52 //添加学生到xml
53 public static void add(Document doc){
54 //取出这个元素
55 Element element = doc.createElement("xuesheng");
56
57 //添加属性
58 element.setAttribute("sex", "vc");
59
60 Element element_name = doc.createElement("mingzi");
61 element_name.setTextContent("xiaoming");
62 Element element_nianling = doc.createElement("nianling");
63 element_nianling.setTextContent("23");
64 Element element_jieshao = doc.createElement("jieshao");
65 element_jieshao.setTextContent("gi sh");
66 element.appendChild(element_name);
67 element.appendChild(element_nianling);
68 element.appendChild(element_jieshao);
69
70
71 //添加这个元素
72 doc.getDocumentElement().appendChild(element);
73
74 }
75 //更新java在xml文件中操作的内容
76 public static void upda(Document doc) throws Exception{
77 //创建一个TransformerFactory实例
78 TransformerFactory tff = TransformerFactory.newInstance();
79 //通过TransformerFactory 得到一个转换器
80 Transformer tf = tff.newTransformer();
81 //通过Transformer类的方法 transform(Source xmlSource, Result outputTarget)
82 //将 XML Source 转换为 Result。
83 tf.transform(new DOMSource(doc), new StreamResult("src/class.xml"));
84 }
85
86 //遍历xml文件的元素
87 public static void list(Node node){
88 if(node.getNodeType()==Node.ELEMENT_NODE)
89 System.out.println(node.getNodeName());
90 //得到该结点的子结点
91 NodeList nodelist = node.getChildNodes();
92
93 for(int i=0;i<nodelist.getLength();i++){
94 Node n = (Node) nodelist.item(i);
95 list(n);
96 }
97 }
98 //获取document对象的 元素的 文本
99 public static void red(Document docu){
100 NodeList nodelist = docu.getElementsByTagName("xuesheng");
101 Element element = (Element)nodelist.item(0);
102 System.out.println(element.getAttribute("sex"));
103 System.out.println(element.getTextContent());
104 }
105 }