zoukankan      html  css  js  c++  java
  • Java用DOM操作xml

    JAXP DOM方式解析XML文档实例
    增删改查
    package jiexi; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; //JAXP DOM方式解析XML文档实例 public class JaxpCRUD { public static void main(String[] args) throws Exception { //1,得到解析器DocumentBuilder DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder db=dbf.newDocumentBuilder(); //2,得到代表整个xml文档的Document对象 Document document=db.parse("src/book.xml"); test1(document); } //1、得到具体节点的内容 public static void test1(Document document){//得到第二本书的售价 NodeList list=document.getElementsByTagName("售价"); int length=list.getLength();//获得元素节点的个数 System.out.println(length); Node node=list.item(1);//角标从0开始 System.out.println(node.getTextContent()); } //2、遍历所有元素节点 public static void test2(Node node){ //1,判断node是否是元素节点,如果是,打印该节点 if(node.getNodeType()==Node.ELEMENT_NODE ){//判断是否是元素节点 System.out.println(node.getNodeName()); } //2,判断是否有孩子节点 NodeList children=node.getChildNodes(); for(int i=0;i<children.getLength();i++){ Node n=children.item(i); test2(n);//3,递归调用 } }
    //3、修改某个元素节点的主题内容
        //将第一本书的售价改为49元
         public static void test3(Document document)throws Exception{
            //1,找到第一本书的售价节点
            NodeList list=document.getElementsByTagName("售价");
            Node node=list.item(0);
            //2,将主题内容改为49元
            node.setTextContent("49元");
            //3,更新设置
            Transformer ts = TransformerFactory.newInstance().newTransformer();
            ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
         }
    	//4、向指定元素节点中增加子元素节点
        //向第一本书中添加节点<优惠价>39</优惠价>
         public static void test4(Document document)throws Exception{
            //1,找到增加节点处的父级元素
            Node node=document.getElementsByTagName("书").item(0);
            //2,创建节点,并添加主体内容
            Element ele=document.createElement("优惠价");
            ele.setTextContent("39元");
            //3,节点添加到父级元素中
            node.appendChild(ele);
            //4,更新设置
            Transformer ts=TransformerFactory.newInstance().newTransformer();
            ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
         }
         //5、向指定元素节点上增加同级元素节点
         //向第二本书中添加优惠价
         public static void test5(Document document)throws Exception{
            //1,找到添加元素的兄弟节点
            Node node=document.getElementsByTagName("售价").item(1);
            //2,创建节点,并添加内容
            Element ele=document.createElement("优惠价");
            ele.setTextContent("18元");
            //3,节点添加
            node.getParentNode().appendChild(ele);
            //4,更新设置
            Transformer ts=TransformerFactory.newInstance().newTransformer();
            ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
         }
         //6、删除指定元素节点
         //删除优惠价
         public static void test6(Document document)throws Exception{
            //1,获得优惠价节点
            Node node=document.getElementsByTagName("优惠价").item(0);
            //2,删除节点
            node.getParentNode().removeChild(node);
            //3,更新设置
            Transformer ts=TransformerFactory.newInstance().newTransformer();
            ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
         }	
        //7、操作XML文件属性
    	
    
    
    
    public static void test7(Document document){
    		//得到第一本书的属性
    		Node node=document.getElementsByTagName("书").item(0);
    		if(node.getNodeType()==Node.ELEMENT_NODE){
    			Element ele=(Element)node;
    			System.out.println(ele.getAttribute("出版社"));
    		}
    	}
    	//设置第二本书的属性值为新华
    	public static void test8(Document document)throws Exception{
    		Node node=document.getElementsByTagName("书").item(1);
    		Element ele=(Element)node;
    		ele.setAttribute("出版社", "新华");
    		TransformerFactory tf=TransformerFactory.newInstance();
    		Transformer ts=tf.newTransformer();
    		ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
    	}
    }
    
  • 相关阅读:
    C#仿QQ皮肤系列之-引言
    教你打造Silverlight超酷翻页实例
    大文件上传 进度条显示 (仿csdn资源上传效果)
    Winform下的地图开发控件(GMap.NET)使用心得之二
    Web打印的解决方案之普通报表打印
    基于jQuery的表单验证插件:jValidate
    判断时间段内有几个休息期
    C++基础语法
    Web网页安全色谱
    C#仿QQ皮肤-总体层次说明(二)
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4681490.html
Copyright © 2011-2022 走看看