xml编程

【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 stubSystem.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}}

    推荐阅读