首页(162) xml(5) spring(1) 生活(8) java(70) 代码(10) 英语(4) 数据库(7) c#(14) 成长(10) 软件工程(27)  写新日志
 
 

玻璃杯中的花生壳

  真爱的事业和真正的爱情一生只有一次,都值得我们温柔地相待,因为那种感觉是永远都无法复制的, 这世界真正属于你的东西其实并不多,你不好好珍惜,它便会离你而去,包括机遇,包括爱情,包括生命。
   不要找任何理由,  当幸福在你身边的时候就抓住它,你就一定会很幸福! 
   

时 间 记 忆
«September 2025»
123456
78910111213
14151617181920
21222324252627
282930

最 新 评 论
回复:xml的Jdom解析过程详解
回复:突然想到的几句话!
 Boyle came out of n
回复:xml的Jdom解析过程详解
回复:配置Spring数据源
回复:使用SAX解析XML
回复:java中写文件操作时FileOu
回复:关联和依赖关系的区分
回复:HttpSessionListen
回复:Spring AOP四种创建通知(

最 新 日 志
Java开发者的十大戒律
配置Spring数据源
java多线程设计模式
java中switch的使用
性格,编码,测试
突然想到的几句话!
理解Spring AOP中的关键概念
Spring AOP四种创建通知(拦截器
xml的四种解析方法 比较 sax,do
xml的Jdom解析过程详解

最 新 留 言
签写新留言

我渴望知识
很好的东东
帖子不错,道声谢
想拜师学艺
我的呼喊

搜 索


用 户 登 录
用户名称:
登陆密码:
密码保存:

友 情 连 接

模板设计:部落窝模板世界

blog名称:玻璃杯中的花生壳
日志总数:162
评论数量:249
留言数量:1
访问次数:828620
建立时间:2004年11月4日
 
 
 
[xml]xml的SAX解析过程详解
[ 2007/6/20 14:41:24 | By: 玻璃杯中的花生壳 ]
 
  Xml技术简介Xml文件有两种约束类型,包括文档类型定义(DTD)和Xml 模式(Schema)。Xml DTD被包含在xml1的标准里。Xml 模式被包含在W3C的标准中。在xml 数据和xml 模式两者之间有很多的区别。A. xml模式支持的数据类型比xml DTD多;B. xml模式在无序的情况下使用起来比xml DTD更方便;C. xml模式支持名字空间,可以在不同的文件中定义相同的方法等。D. xml模式形成的文档可以被多种标准解析,如dom,sax或者jdom等,而xml DTD方式下确不行。SAX解析方式上面我简要介绍了几种解析xml文件的技术,这里我们使用SAX技术给出一个小例子,大家可以从这个例子中发现如果你能够掌握一些开源软件包,你就可以很快掌握解析xml数据的技术。制作一个简单的xml文件component.xml <?xml version="1.0"?><XmlComponents>        <XmlComponent>               <ComNo>1</ComNo>        </XmlComponent></XmlComponents> 下载xerces.jar软件包在Apache网站上×××下载xerces.jar软件包,这个包中包含了上面我们列举的几种解析xml数据的API。然后将这个软件包加入到程序的classpath中。制作解析类MySaxParser.java import java.io.IOException;import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*;public class MySaxParser extends DefaultHandler {  private static int INDENT = 2;  // 运行主方法public static void main(String[] argv) {//    if (argv.length != 1) {//      System.out.println("Usage: java ds.MySaxParser [URI]");//      System.exit(0);//    }    System.setProperty("javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl");//    String uri = argv[0];    String uri = "Components.xml";    try {      SAXParserFactory parserFactory = SAXParserFactory.newInstance();      parserFactory.setValidating(false);      parserFactory.setNamespaceAware(false);      MySaxParser MySaxParserInstance = new MySaxParser();      SAXParser parser = parserFactory.newSAXParser();      parser.parse(uri, MySaxParserInstance);    }    catch(IOException ex) {      ex.printStackTrace();    }    catch(SAXException ex) {      ex.printStackTrace();    }    catch(ParserConfigurationException ex) {      ex.printStackTrace();    }    catch(FactoryConfigurationError ex) {      ex.printStackTrace();    }  }  private int idx = 0; //indent  // 处理各种分隔符号  public void characters(char[] ch, int start, int length) throws SAXException {    //instantiates s, indents output, prints character values in element    String s = new String(ch, start, length);    if (!s.startsWith("\n")) //空的value不打印      System.out.println(getIndent()+ " Value: " + s);  }  // 处理文档尾  public void endDocument() throws SAXException {    idx -= INDENT;    System.out.println(getIndent() + "end document");    System.out.println("...PARSING ends");  }  // 处理标记尾  public void endElement(String uri, String localName, String qName) throws SAXException {    idx -= INDENT;  }  // 处理文档的起始点  public void startDocument() throws SAXException {    idx += INDENT;    System.out.println("PARSING begins...");    System.out.println(getIndent() + "start document: ");  }// 处理标记头  public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {    idx += INDENT;    System.out.println('\n' + getIndent() + "start element: " + qName);  }  private String getIndent() {    StringBuffer sb = new StringBuffer();    for (int i = 0; i < idx; i++)      sb.append(" ");    return sb.toString();  }} 总结,虽然解析xml数据很复杂,因为涉及了很多的递归算法,但是我们可以使用业界比较成熟的解析API来进行xml数据处理。我现在只是给出了一个非常简单的例子,但是在真实系统中远比这个要复杂的多,大家以后在使用的使用会发现还是有很多的工作要做的。  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1592786  
 

阅读全文(4670) | 回复(0) | 编辑 | 精华
 

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 
部落窝Blog模板世界部落窝Blog模板世界
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.035 second(s), page refreshed 144804614 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号