xml编程

一个xml文件除了我们人去读写之外,还可以通过电脑去读写,通过电脑去读写xml文件的过程就是xml编程的过程。
1,xml解析:
要想使用电脑来读xml文件就要对文件进行解析,最主流的解析有:DOM,SAX解析。
@1,DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。
@2,SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。
2,使用sax解析xml文件代码:

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;


public class saxTast {

    /**
     * @param args
     * @throws SAXException 
     * @throws ParserConfigurationException 
     */
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        //创建解析器工厂
        SAXParserFactory fac=SAXParserFactory.newInstance();
        //通过工厂获取sax解析器
        SAXParser par=fac.newSAXParser();
        //获取读取器
        XMLReader x=par.getXMLReader();
        //注册事件处理器
        x.setContentHandler(new MyContentHandler());
        x.parse("xuexiao.xml");
    }

}

import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;


public class MyContentHandler implements ContentHandler {

    public void characters(char[] a, int arg1, int arg2) throws SAXException {
        // TODO Auto-generated method stub
        System.out.println(new String(a,arg1,arg2));
    }

    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub

        System.out.println("文档解析结束了");
    }

    public void endElement(String arg0, String arg1, String arg2)
            throws SAXException {
        // TODO Auto-generated method stub
        System.out.println(arg2);

    }

    public void endPrefixMapping(String arg0) throws SAXException {
        // TODO Auto-generated method stub

    }

    public void ignorableWhitespace(char[] arg0, int arg1, int arg2)
            throws SAXException {
        // TODO Auto-generated method stub

    }

    public void processingInstruction(String arg0, String arg1)
            throws SAXException {
        // TODO Auto-generated method stub

    }

    public void setDocumentLocator(Locator arg0) {
        // TODO Auto-generated method stub

    }

    public void skippedEntity(String arg0) throws SAXException {
        // TODO Auto-generated method stub

    }

    public void startDocument() throws SAXException {
        // TODO Auto-generated method stub
            System.out.println("文档解析开始了");
    }

    public void startElement(String arg0, String arg1, String arg2,
            Attributes arg3) throws SAXException {
        // TODO Auto-generated method stub
            System.out.println("发现了开始标签"+arg2);
    }

    public void startPrefixMapping(String arg0, String arg1)
            throws SAXException {
        // TODO Auto-generated method stub

    }

}

你可能感兴趣的:(xml编程)