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 }