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 }
原文地址:https://www.cnblogs.com/sasaxu/p/3317490.html