zoukankan      html  css  js  c++  java
  • 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());
        }
    }
  • 相关阅读:
    idHTTP使用代理IP
    Delphi的TRegistry注册表类方法详解
    判断WebBrowser是否加载完成.
    vs2010 安装记
    Delphi中destroy, free, freeAndNil, release用法和区别
    IdHTTP处理HTTP 302遇到的问题
    passcal 多线程例子,线程管理,创建,暂停,中止,等待等。。。
    passcal try嵌套
    passcal 编写多线程程序
    用一个 Byte 数表示 8 个复选框的选择状态
  • 原文地址:https://www.cnblogs.com/shaoshao/p/3304133.html
Copyright © 2011-2022 走看看