xml文档解析

//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表示一个完整的标签,如haha 这个整体就是element

    //获取第一个匹配名字的子标签
    Element e = root.element("div");

    //获取所有匹配名字的子标签
    Iterator it = e.elementIterator("div");

    //获取所有子标签
    List 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 list = e.attributes();

    //获取所有属性对象的迭代器
    Iterator 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 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文档解析)