• xml(3)


    xml的解析方式:dom解析和sax解析

    DOM解析

    使用jaxp进行增删改查

    1.创建DocumentBuilderFactory工厂

    2.通过DocumentBuilderFactory工厂创建DocumentBuilder

    3.解析xml,得到Document对象

    *在对document进行增删改查操作时,需要回写到xml中:

    1.创建TransformerFactory回写工厂

    2.通过回写工厂,获得Transformer

    3.Transformer.transform(new DOMSource(document),new StreamResult(""))

     1 private static void selectALL() throws Exception {
     2     /**
     3      * 
     4      * 1.创建DocumentFacTory工厂
     5      * 2.通过Document Factory工厂得到DocumentBuilder
     6      * 3.解析xml得到Document对象
     7      */
     8     
     9     //创建工厂
    10     DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
    11     //创建BUilder
    12     DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
    13     //解析xml 获得document对象
    14     Document document=documentBuilder.parse("src/com//zyf/test.xml");
    15     
    16     //获得所有name元素
    17     NodeList list=document.getElementsByTagName("sex");
    18     //遍历
    19     for(int i=0;i<list.getLength();i++){
    20         Node node1=list.item(i);
    21         System.out.println(node1.getTextContent());
    22     }
    23 }
     

    public static void addSex() throws Exception{
        //创建工厂
        DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
        //获得builder
        DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
        //获得deocument
        Document document=documentBuilder.parse("src/com/zyf/test.xml");
        //创建节点<sex>nv</sex>
        Node sex=document.createElement("sex");
        //在sex中创建文本
        Node text=document.createTextNode("nv");
    //    sex.setTextContent("nv");
        sex.appendChild(text);
        //得到sex的父节点<p1>
        NodeList list=document.getElementsByTagName("p1");
        Node node1=list.item(0);
        //添加进父节点p1
        node1.appendChild(sex);
        
        //回写
        TransformerFactory transformerFactory=TransformerFactory.newInstance();
        Transformer transformer=transformerFactory.newTransformer();
        transformer.transform(new DOMSource(document),new StreamResult("src/com/zyf/test.xml"));
    }

    public static void removeSex()throws Exception{
        //创建工厂
        DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
        //闯将builder
        DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
        //获得document
        Document document=documentBuilder.parse("src/com/zyf/test.xml");
        //获得sex的父节点
        //获得sex
        NodeList list=document.getElementsByTagName("sex");
        Node node1=list.item(0);
        //获得sex的父节点
        Node parent=node1.getParentNode();
        //remove
        parent.removeChild(node1);
        //回写
        //回写工厂
        TransformerFactory transformerFactory=TransformerFactory.newInstance();
        Transformer transformer=transformerFactory.newTransformer();
        transformer.transform(new DOMSource(document), new StreamResult("src/com/zyf/test.xml"));
    }[Document是Node的子类]

     xml的sax解析方式

  • 相关阅读:
    浅谈软件测试流程
    在9个点上画10条直线,要求每条直线上至少有三个点
    word中快速插入时间
    多核处理器时,__rdtsc()的使用编程珠玑第一章
    解决 error LNK2019: 无法解析的外部符号 问题
    修改IE代理
    overload重载 override覆盖 overwirte重写
    几个题目
    12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。
    在link.c中已经include了头文件了,为什么使用ld还无法识别mian和printf?
  • 原文地址:https://www.cnblogs.com/code-fun/p/11876233.html
Copyright © 2020-2023  润新知