java操作xml——添加、修改、删除、遍历
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 }