java操作xm——添加、修改、删除、遍历

package com.xml.zh;
import javax.xml.parsers.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;
public class XmlTest1{

    /**
     * 使用dom技术对xml进行解析
     * @param args
     * 从这里我发现: Node 是 Element, document的父类, Element类主要是
     * 增加,删除,修改,返回 等。document 创建 xml中的对象
     *  例:document.getElementById();方法。
     */
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        //创建一个documentBuilderFactory实例
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        //创建一个documentBuilder
        DocumentBuilder db=dbf.newDocumentBuilder();
        //指定是那个xml文件
        Document document = db.parse("src/class.xml");
        //list(document);
        //red(document);
        update(document);
        upda(document);
    }
    //修改
    public static void update(Document doc){
        //修改元素内容
        Element ele = (Element)doc.getElementsByTagName("mingzi").item(0);
        ele.setTextContent("xiaohai");
        
        //修改属性
        Element element = (Element)doc.getElementsByTagName("xuesheng").item(0);
        element.setAttribute("sex", "nv");
    }
    
    //删除学生
    public static void del(Document doc){
        Node node = doc.getElementsByTagName("xuesheng").item(0);
        //node.getParentNode().removeChild(node);
        //删除属性
        Element ele = (Element)node;    
        ele.removeAttribute("sex");
    }
    
    //添加学生到xml
    public static void add(Document doc){
        //取出这个元素
        Element element = doc.createElement("xuesheng");
        
        //添加属性
        element.setAttribute("sex", "vc");
        
        Element element_name = doc.createElement("mingzi");
        element_name.setTextContent("xiaoming");
        Element element_nianling = doc.createElement("nianling");
        element_nianling.setTextContent("23");
        Element element_jieshao = doc.createElement("jieshao");
        element_jieshao.setTextContent("gi sh");
        element.appendChild(element_name);
        element.appendChild(element_nianling);
        element.appendChild(element_jieshao);
        
        
        //添加这个元素
        doc.getDocumentElement().appendChild(element);
        
    }
    //更新java在xml文件中操作的内容
    public static void upda(Document doc) throws Exception{
        //创建一个TransformerFactory实例
        TransformerFactory tff = TransformerFactory.newInstance();
        //通过TransformerFactory 得到一个转换器
        Transformer tf = tff.newTransformer();
        //通过Transformer类的方法 transform(Source xmlSource, Result outputTarget) 
        //将 XML Source 转换为 Result。
        tf.transform(new DOMSource(doc), new StreamResult("src/class.xml"));
    }
    
    //遍历xml文件的元素
    public static void list(Node node){
        if(node.getNodeType()==Node.ELEMENT_NODE)
            System.out.println(node.getNodeName());
        //得到该结点的子结点
        NodeList nodelist = node.getChildNodes();
        
        for(int i=0;i<nodelist.getLength();i++){
            Node n = (Node) nodelist.item(i);
            list(n);
        }
    }
    //获取document对象的 元素的 文本
    public static void red(Document docu){
        NodeList nodelist = docu.getElementsByTagName("xuesheng");
        Element element = (Element)nodelist.item(0);
        System.out.println(element.getAttribute("sex"));
        System.out.println(element.getTextContent());
    }
}
原文地址:https://www.cnblogs.com/shaoshao/p/3304133.html