美文网首页
xml文档解析

xml文档解析

作者: 陈洲 | 来源:发表于2017-02-22 15:06 被阅读0次
    //Dom4J解析*******************************************************************************
        
        //必须先导入Dom4J包
    
        //创建xml解析器
        SAXReader reader = new SAXReader();
        //用解析器读取xml文件,存入document对象
        Document doc = reader.read(./chenzhou/hello.xml);
    
        //把doc文档写入一个xml文件
        FileOutputStream out = new FileOutputStream("e:/contact.xml");
        
        OutputFormat format = OutputFormat.createCompactFormat(); //紧凑格式 
        format.setEncoding("utf-8");
    
        XMLwriter writer = new XMLwriter(out,format); //如果不设置格式就不用format参数
        writer.write(doc);
        writer.close();
    
        //创建空白文档
        Document doc = DocumentHelper.createDocument();
    
        //获取根标签
        Element root = doc.getRootElement();
    
        //获取当前标签Element下所有的node
        Iterator it = root.nodeIterator();   //node和element的区别:node可以是任何东西,文本,属性,标签等。
                                             //element表示一个完整的标签,如<tr align = "center">haha</tr> 这个整体就是element
    
        //获取第一个匹配名字的子标签
        Element e = root.element("div");
    
        //获取所有匹配名字的子标签
        Iterator<Element> it = e.elementIterator("div");
    
        //获取所有子标签
        List<Element> list = e.elements();
    
        //创建子标签
        Element e = doc.addElement("div");
        Element e2 = e.addElement("tr");
    
        //删除标签
        e.detach();
    
        //获取匹配名字的属性值
        String value = e.attributeValue("align");
    
        //获取匹配名字的属性对象
        Attribut att = e.attribute("align");
    
        //获取属性对象的值
        String value = att.getValue();
    
        //获取属性对象的名字
        String name = att.getName();
    
        //获取所有属性对象
        List<Attribute> list = e.attributes();
    
        //获取所有属性对象的迭代器
        Iterator<Attribute> it = e.attributeIterator();
    
        //创建标签的属性
        Attribute att = e.addAttrbute("name","cz");
    
        //修改属性值
        att.setValue("cz9513");
    
        //删除属性
        att.detach();
    
        //获取当前Elemment的文本
        Stirng text = e.getText();
    
        //获取子标签的文本
        String text = e.elementText("div");
    
        //修改文本内容
        text.setText("abc");
    
    //XPath技术*******************************************************************************
        
        /*xpath是一门独立的技术,可以用于多出,这里讨论在Dom4J中的应用
            1.  /       表示根位置 或者  子标签
            2.  //      表示后代标签,所有后代中满足条件的
            3.  *       表示所有元素
            4.  [ ]      表示条件
            5.  @      表示选择属性
            6.  text()    表示选择文本
            7.  and     表示与条件
        */
    
        //Dom4J中xpath用法
        List<Node> list = e.selectNodes("xpath表达式");
        Node node = e.selectSingleNode("xpath表达式");
        Element e2 = (Element)e.selectSingleNode("xpath表达式");
    
        //xpath实例
        String xpath = "";
            
        xpath = "/contactList";
        xpath = "/contactList/contact";
        xpath = "//contact/name";
        xpath = "//name";
        xpath = "/contactList/*"; 
        xpath = "/contactList//*";      
        xpath = "//contact[@id]"; //选择带有id属性的contact标签
        xpath = "//contact[2]";   //第二个contact标签
        xpath = "//contact[last()]";
        xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象
        xpath = "//contact[not(@id)]";//选择不包含id属性的contact标签节点
        xpath = "//contact[@id='002']";//选择id属性值为002的contact标签
        xpath = "//contact[@id='001' and @name='eric']";//选择id属性值为001,且name属性为eric的contact标签
        xpath = "//name/text()";//返回文本内容
        xpath = "//contact/name[text()='abc']";//选择姓名为abc的name标签
    
    
    //SAX解析*******************************************************************************
    
        //创建SAX解析对象
        SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
    
        //调用parse方法开始解析
        File f = new File(./abc.xml);
        parser.parse(f,new MyDefaultHandler());
    
        //DefaultHandler对象,parse函数会按顺序控制这个对象内的各个方法循环执行,并顺利读完xml文档
        public class MyDefaultHandler extends DefaultHandler {
    
            //文档开始时执行,即读到第一个xml字符
            public void startDocument() throws SAXException {}
            //读到标签时执行
            public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {}
            //对标签内部信息处理
            public void characters(char[] ch, int start, int length)throws SAXException {}
            //读完标签是执行
            public void endElement(String uri, String localName, String qName)throws SAXException {}
            //读完文档时执行
            public void endDocument() throws SAXException {}
        }
    

    相关文章

      网友评论

          本文标题:xml文档解析

          本文链接:https://www.haomeiwen.com/subject/hflmwttx.html