sax(用于处理XML事件驱动的推模型)解析例子

SAX解析

Java程序如下:

import org.xml.sax.helpers.DefaultHandler;

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

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

public class Test7 extends DefaultHandler
{
    int indent = 0;

   public Test7() {
   }

   public void startElement(String namespaceURI, String localName,
           String qName, Attributes atts) throws SAXException {
       if (qName == "response") {
              System.out.println("User: " + atts.getValue("username"));
           } else if (qName == "question") {
              thisQuestion = atts.getValue("subject");
           }

           thisElement = qName;

   }

  public void endElement(String namespaceURI, String localName, String qName)
   throws SAXException {

       thisQuestion = "";
       thisElement = "";
   }
  public void characters(char[] ch, int start, int length)
  throws SAXException  {

    if (thisElement == "question") {
    printIndent(4);
    System.out.print(thisQuestion + ": ");
    System.out.println(new String(ch, start, length));
    }
  }

   public void startDocument() throws SAXException {
       System.out.println("Tallying survey results...");
       indent = -4;

   }

   public void printIndent(int indentSize) {
       for (int s = 0; s < indentSize; s++) {
          System.out.print(" ");
       }
    }

   String thisQuestion = "";
   String thisElement = "";

   public static void main (String args[]) {

   XMLReader xmlReader = null;

      try {

         SAXParserFactory spfactory = SAXParserFactory.newInstance();

         SAXParser saxParser = spfactory.newSAXParser();

         xmlReader = saxParser.getXMLReader();
         xmlReader.setContentHandler(new Test7());

         InputSource source = new InputSource("surveys.xml");
         xmlReader.parse(source);

      } catch (Exception e) {
            System.err.println(e);
            System.exit(1);
      }

   }
}

xml文件如下:

<?xml version="1.0"?>
<surveys>
    <response username="bob">
       <question subject="appearance">A</question>
       <question subject="communication">B</question>
       <question subject="ship">A</question>
       <question subject="inside">D</question>
       <question subject="implant">B</question>
    </response>
    <response username="sue">
       <question subject="appearance">C</question>
       <question subject="communication">A</question>
       <question subject="ship">A</question>
       <question subject="inside">D</question>
       <question subject="implant">A</question>
    </response>
    <response username="carol">
       <question subject="appearance">A</question>
       <question subject="communication">C</question>
       <question subject="ship">A</question>
       <question subject="inside">D</question>
       <question subject="implant">C</question>
    </response>
</surveys>

执行效果如下:

Tallying survey results...
User: bob
    appearance: A
    communication: B
    ship: A
    inside: D
    implant: B
User: sue
    appearance: C
    communication: A
    ship: A
    inside: D
    implant: A
User: carol
    appearance: A
    communication: C
    ship: A
    inside: D
    implant: C

sax(用于处理XML事件驱动的推模型)解析例子

时间: 2024-08-02 12:38:59

sax(用于处理XML事件驱动的推模型)解析例子的相关文章

Json/Xml简介和处理模型

JSON json简介 JSON是一种基于文本的数据交换格式,源自JavaScript,用于Web服务和其他连接的应用程序.以下部分介绍了JSON语法,JSON使用概述以及生成和解析JSON的最常用方法的说明. JSON语法 JSON只定义了两个数据结构:对象和数组.对象是一组名称 - 值对,而数组是值列表.JSON定义了七种值类型:字符串,数字,对象,数组,true,false和null. 以下示例显示包含名称 - 值对的示例对象的JSON数据.名称的值"phoneNumbers"是

XML编程总结(三)——使用SAX接口操作xml

(三)使用SAX接口操作xml SAX解析器被称为SAXParser,SAXParser是由javax.xml.parsers.SAXParserFactory创建的.与DOM解析器不同,SAX解析器并不创建XML文档的内存表示,因此会占用更少的内存.SAX解析器通过调用回调方法(事件驱动)将XML文档结构通知客户端,也就是通过调用提供给SAXParser的org.xml.sax.helpers.DefaultHandler处理器内的方法. org.xml.sax.helpers.Default

XML的DOM、SAX、DEMO4J及DEMO4J整合Path的代码例子

1.DMO解析 package cn.itcast.xml.dom; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.No

XML(1)Java解析XML的四种方法

目前在Java中用于解析XML的技术很多,主流的有DOM.SAX.JDOM.DOM4j,下文主要介绍这4种解析XML文档技术的使用及优缺点. 先来定义一个操作xml文档的接口XmlDocument,它定义了xml的创建与解析的接口,内容如下: package com.interview.xml; /*** * @description:定义XML文档建立与解析的接口 * @author xgj */ public interface XmlDocument { /** * 建立XML文档 */

XML文件的创建和解析笔记

解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Languag

IO模型解析

IO模型解析 标签 : IO 1.1 IO模型概述 在服务器端网络编程我们经常会用到一些IO模型,有如下几种IO模型 同步阻塞IO 同步非阻塞IO IO多路复用 异步IO 信号驱动IO 1.2 IO模型涉及的基本概念. 要想好好理解上面的IO模型,我们首先来明确如下几个概念. 1. 同步:当程序发生一次功能调用的时候,需要等待这次调用返回然后才能进行下一步操作.也就是事情要一件一件做. eg:单线程程序中的顺序执行. 2. 异步:当程序发生一次调用的时候,无需等待这次调用的返回,就可以继续执行程

【Android进阶】解析XML文件之使用DOM解析器

在前面的文章中,介绍了使用SAX解析器对XML文件进行解析,SAX解析器的优点就是占用内存小.这篇文章主要介绍使用DOM解析器对XML文件进行解析.DOM解析器的优点可能是理解起来比较的直观,当然,每个人对不同的解析方法可能有不同的喜好.但是DOM解析器有个比较大的缺点,就是占用内存比较多,在Android中的XML解析中,还是更推荐其他的解析方式. 下面介绍使用DOM解析器对XML进行解析. 下面是我们需要解析的xml文件 <?xml version="1.0" encodin

python xml解析例子

# -*- coding: utf-8 -*- """ Created on Thu Apr 16 23:18:27 2015 @author: shifeng """ ''' 功能:解析CDR_sample.xml文件,输出格式为DNorm接收的格式,并将训练集的"label"写入到文档中 xml文件:见CSDN资源共享 参考博客:http://www.cnblogs.com/fnng/p/3581433.html '''

使用JAXP对XML文档进行DOM解析

一.XML解析方式分为两种:dom和sax dom:(Document Object Model,即文档对象模型)是W3C组织推荐的解析XML的一种方式. sax:(Simple API for XML)不是官方标准,但它是XML社区事实上的标准,几乎所有的XML解析器都支持它. dom和sax解析方法的区别: dom:对文档CRUD(增删改查)比较方便,缺点:占用内存比较大(将xml文件全部读入内存). sax:占用内存较少,解析速度快(从上往下读一行解析一行).缺点:只适合读取,不适合CRU