利用SAX解析XML Document(实例解析http://api.google.com/GoogleSearch.wsdl)

利用Dom,Sax,Pull三种方式解析xml文件 最近找工作,看到许多公司的要求里都写了要会xml解析,所以就把之前的xml解析知识又重新回顾了一下,写个小例子. 解析xml文件常用的几种方式也就dom,sax,pull了,并且面试官经常问到的也是这三种解析方式之间的优缺点以及使用情况,先说一下这三种方式的优缺点和使用情况吧: 其实dom,sax,pull之间的优缺点网上有很多,讲的搞不好比我的还要深入和贴切,不过还是要说一下,毕竟自己以后还 阅读详情

最近在学习 Web Services , 这里介绍一个 利用SAX解析XML Document 的例子,用JAVA编写,可以直接运行的

 

  1. import java.io.StringWriter;
  2. import java.util.LinkedList;
  3. import javax.xml.parsers.SAXParser;
  4. import javax.xml.parsers.SAXParserFactory;
  5. import org.xml.sax.Attributes;
  6. import org.xml.sax.InputSource;
  7. import org.xml.sax.SAXException;
  8. import org.xml.sax.helpers.DefaultHandler;
  9. /*
  10.  * Created on 2008-10-28
  11.  *
  12.  * TODO To change the template for this generated file go to
  13.  * Window - Preferences - Java - Code Style - Code Templates
  14.  */
  15. /**
  16.  * @author Administrator
  17.  * 
  18.  * TODO To change the template for this generated type comment go to Window -
  19.  * Preferences - Java - Code Style - Code Templates
  20.  */
  21. public class ParseGoogleSearchWDSLusingSAX extends DefaultHandler {
  22.     // Constants
  23.     private static final String _CHARACTER_ELEMENT_NAME = "message";
  24.     private static final String _BINDING_ELEMENT_NAME = "binding";
  25.     
  26.     private static final String _URL = "http://api.google.com/GoogleSearch.wsdl";
  27.     // Flag to remember if we are dealing with character data while parsing
  28.     private boolean _messageFound = false;
  29.     private boolean _bindingFound = false;
  30.     // The data we're looking for in the document
  31.     private LinkedList _messageNames = new LinkedList();
  32.     private LinkedList _operationNames = new LinkedList();
  33.     /**
  34.      * 
  35.      * The method called when the start of a new element is
  36.      * 
  37.      * found.
  38.      *  
  39.      */
  40.     public void startElement(String namespaceURI,
  41.     String localName,
  42.     String qualifiedName,
  43.     Attributes attributes)
  44.     throws SAXException
  45.     {
  46.         _messageFound = qualifiedName.equals(_CHARACTER_ELEMENT_NAME);
  47.         if (!_bindingFound) {
  48.             _bindingFound = qualifiedName.equals(_BINDING_ELEMENT_NAME);
  49.         }
  50.         if (_messageFound) {
  51.             _messageNames.add(new String(attributes.getValue("name")));
  52.         }
  53.         
  54.         if (_bindingFound && qualifiedName.equals("operation")) {
  55.             _operationNames.add(new String(attributes.getValue("name")));
  56.         }
  57.     }
  58.     /**
  59.      * 
  60.      * The method called when the end of an element is found.
  61.      *  
  62.      */
  63.     public void endElement(String namespaceURI,
  64.     String localName,
  65.     String qualifiedName)
  66.     throws SAXException
  67.     {
  68.         _messageFound = false;
  69.         
  70.         if(qualifiedName.equals("binding")){_bindingFound=false;}
  71.     }
  72.     
  73.     /**
  74.      * 
  75.      * A convenience method to pretty-print the characters
  76.      * 
  77.      * found.
  78.      *  
  79.      */
  80.     public StringWriter outputCharacters()
  81.     {
  82.         StringWriter sw = new StringWriter();
  83.         sw.write("Output result 1:There are " + _messageNames.size() + " message names :/n");
  84.         sw.write("--------------------------------/n");
  85.         for (int i = 0; i < _messageNames.size(); i++)
  86.         {
  87.             sw.write(i + 1 + " | " + (String) _messageNames.get(i) + "/n");
  88.         }
  89.         sw.write("--------------------------------/n");
  90.         sw.write("/n");
  91.         
  92.         sw.write("Output result 2:There are " + _operationNames.size()
  93.                 + " operation names of binding element :/n");
  94.         sw.write("--------------------------------/n");
  95.         for (int i = 0; i < _operationNames.size(); i++)
  96.         {
  97.             sw.write(i + 1 + " | " + (String) _operationNames.get(i) + "/n");
  98.         }
  99.         return sw;
  100.     }
  101.     /**
  102.      * 
  103.      * mian method
  104.      *  
  105.      */
  106.     public static void main(String[] args) {
  107.         try
  108.         {
  109.             ParseGoogleSearchWDSLusingSAX swp = new          ParseGoogleSearchWDSLusingSAX();
  110.             SAXParserFactory sf = SAXParserFactory.newInstance();
  111.             SAXParser sp = sf.newSAXParser();
  112.             
  113.             //URL refers to the location on the web 
  114.             sp.parse(_URL, swp);
  115.             
  116.             /**an optional way which choose a file in local disk
  117.              * this is for test
  118.             */
  119.             //sp.parse(new InputSource("D:/google.xml"), swp);
  120.             
  121.             // Dump the character information to screen.
  122.             System.out.println(swp.outputCharacters().toString());
  123.         }
  124.         catch (Exception e)
  125.         {
  126.             e.printStackTrace();
  127.         }
  128.     }
  129. }

 

JFreeChart开发股票K线图  在JAVA的图形开发中,JFreeChart提供源代码及DEMO代码,详细的API工具,如果遇到问题还可以到http://www.jfree.org/phpBB2这个论坛一问究竟,全面的技术支持使图形开发起来得心应手!下面的例子是用JFreeChart开发股票K线图,附有注释 import java.sql.*;import java.text.SimpleDateFormat; 阅读详情

相关推荐

ATGrid + JSP + Javascript + XML 开发Web控件打印

 ATGrid  是国内的一款提供WEB打印解决方案的插件,最近由于项目需要,花了几天研究了下,并用这个插件实现了WEB打印,方案如下~ 因为是摸索,希望大家多多指教~插件的下载 ATGrid控件下载地址: http://www.etcell.com/ATGrid/ATGrid.dll ATGrid控件WEB运行包下载地址: http://www.etcell.com/ATGrid/ATGrid.

2700

如何使用java自带的SAX工具类解析XML文件转换为Document对象

文章目录如何使用java自带的SAX工具类解析XML文件转换为Document对象1. 获取需要解析的XML文件java2. 获取DocumentBuilderFactory3. 获取DocumentBuilder4. 使用`parse()`方法把`XML`解析成`Document`5. 解析`Document`对象中的节点信息6.具体的代码内容7.解析结果展示 如何使用java自带的SAX工具类解析XML文件转换为Document对象 1. 获取需要解析的XML文件java //根据xml路径获取该inp

terry 1582

java解析wsdl示例-详细版

首先完整的内容应该是实现java解析wsdl文档获取方法与参数,然后使用soapui发送soap请求获取返回值并解析,而且基本可以解析主流webservice框架生成的wsdl

采用DOM4J中的SAXReader解析webservice返回的XML文件

1.  通过URL连接GET返回的webservice内容,如下代码:       String str = FORECAST_WEATHER_URL + this.getPYName(exter.getCity_code()); log.info("天气预报查询str is " + str); URL url = new URL(str); HttpURLConnec

linwei_1029的专栏 7468

『与善仁』Appium基础 — 19、元素定位工具之UI Automator Viewer

文章目录(一)uiautomatorviewer定位工具1、uiautomatorviewer介绍2、uiautomatorviewer工具打开方式3、uiautomatorviewer布局介绍4、uiautomatorviewer工具的使用 之前我们在做web页面自动化的时候就说过,元素定位是页面自动化的第一步。 同理App自动化测试的第一步,也是元素的定位。 在APP中定位元素的话,需要借助一些元素定位工具。 APP中的元素定位工具大致有三种: uiautomatorviewer Appium Ins

繁华似锦Fighting 1521

深入解析Sigma Delta调制器 —— 从电流采样到数字信号处理的完整链路

本文深入解析了Sigma Delta调制器的工作原理与应用。通过剖析过采样、噪声整形与负反馈核心机制,并结合AMC1306等实例,详细阐述了从电流采样到数字信号处理的完整链路。该技术凭借其高精度和高抗干扰能力,在ADC、电流测量及音频处理等领域发挥着关键作用。

ttt77的博客 645

DOM和SAX(Document Object Model)

基于XML的程序结构如图 DOM、SAX是最主要的两种编程接口规范,Apache Xerces提供DOM和SAX API,支持多种语言 DOM概述 DOM是一个比XML更早的概念,例如IE中的DOM,可以通过JavaScript进行操作HTML W3C的DOM可以看作是一个平台或语言的界面,允许程序和脚本动态地访问及更新文档的内容、结构、脚本程序。也就是说,DOM是一组API,它把XM...

android_mylove的专栏 173

十、强势股的起爆点:第三类买点的实战精解

本文深入解析强势股交易中的第三类买点(三买)实战技巧,涵盖两种经典模式:突破首个中枢后的回踩和底部反转后的直接脱离下跌中枢。通过详细案例和数据分析,揭示三买在捕捉主升浪起爆点时的黄金信号作用,帮助投资者优化风险收益比,提升短线交易成功率。

weixin_30260191的博客 315

如何能正确理解 XML,以及SAX,DOM解析运用

前言 简单的来说 : XML 也是一种文件格式后缀,就好像是windows系统文件上的 txt 一样,但是他们有完全不一样。 XML简介 XML技术是W3C组织发布的,目前遵循的是W3C组织于2000发布的XML1.0规范。 (有的同学会怀疑为什么20年以来,XML还是使用的 XML1.0规范呢?在这之前其实有过XML1.1版本,但是1.1版本出现了不可兼容1.0版本的情况,并且1.0使用效果还可...

帝小辰 424

计算机视觉-全景图像拼接中的特征匹配与优化策略

本文深入探讨了计算机视觉中全景图像拼接的核心技术,重点解析了特征匹配后的关键优化策略。通过SIFT特征提取、RANSAC算法剔除误匹配,并结合APAP算法应对视差与鬼影问题,详细阐述了从基础对齐到无缝融合的完整流程,为开发者实现高质量全景拼接提供了实用指南。

weixin_29039773的博客 363

YOLOv12改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例

本文记录的是。SimAM注意力模块通过优化能量函数来获得每个神经元的三维权重,而或增加计算复杂度。若是有轻量化需求的小伙伴,无参的注意力模块也许是一个不错的选择。

Limiiiing的博客 2910

SAX解析

SAX解析 SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂。 它不是利用游标一行一行地解析,而是利用消息处理机制,遇到什么就处理什么。 比如当我们处理XML数据中遇到一个开始标签后SAX会告诉你“我遇到了一个开始标签,这个标签是XXXX”,等你作出反应后,它会继续往下,这时它遇到了一段文

weixin_46106796的博客 826

ICC2 user guide(二)Placement and Optimization

ICC2 place阶段user guide

m0_61544122的博客 9228

XML 文件sax解析-之创建document对象

一.生成document对象。import org.jdom.*;import org.jdom.input.SAXBuilder; public class ReportDocUtil {  public ReportDocUtil() {  }  /**   * Description:covert xml file to Document   * @param url 格

zhanglix的专栏 812

提示词工程中的上下文隔离

已经进入context的prompt是没有办法让大模型真正的忘记的,但是可以通过prompt技巧强约束模型的后续推理中“不再使用、不再提及、不再引用”某部分提示词,这其实是一种行为抑制(behavior suppression),并不是删除。

Criss@陈磊 235

IMX6ULL---从零开始移植uboot-imx

IMX6ULL---从零开始移植uboot-imx

weixin_42162924的博客 1029

java 解析document_Java开发XML解析器Document、SAXParser、XMLStreamReader详解

1.Document接口对象是官方出的,W3C标准,作为HTML、XML实体类加载到内存中,形成文档对象,然后使用循环进行数据解析。2.SAXParserSAXParser是一个用于处理XML的事件驱动的“推”模型。它不是W3C标准,但它是一个得到了广泛认可的API,大多数SAXParser解析器在实现的时候都遵循标准。SAXParser解析器不象DOM那样建立一个整个文档的树型表示,而是使用数据...

weixin_35067976的博客 1340

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

XML解析---DOM解析和SAX解析

XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。 对于XML的解析,还有一些方便的XML解析工具,如JAXB、XStream这样的解析工具,它们利用注解、反射等非常方便地帮助我们实现从XML解析为Java对象,还有如Dom4j,它是一个易用的、开源的库,特别...

qq_40348465的博客 380

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

springboot解析webservice.xml

客户端 1、项目右键选择webservice 2、 3、客户端解析wsdl文件 @Service public class GwrzService { public boolean addList(List<GetPositonInfoVO> list){ boolean result=false; // 创建WebService客户端代理工厂 JaxWs...

just love code 2578

google天气预报SAX解析版(只有当天的天气)

废话不多说,直接上代码,代码里面注释很详细,不过之前一定要使用权限, 这两个权限不是必须的,但是为了以防万一,我一般都写上。 一定要写上,只要需要联网,都需要写上他,我的博客里面有一份权限大全,有兴趣的可以看看, android上的权限很严格,使用特定功能必须使用特定的权限。其实,要是都写上不知道是什么结果,我也没有试过。哈哈哈     <manifest xmlns:an

kyrin(云中鹤) 777

利用DOM、SAX技术解析XML文档

利用DOM、SAX技术解析XML文档    我们知道XML文档现在大多用来传输数据和做配置文件,但不管是什么样的应用,都离不开读取XML中保存的数据信息。下面我们就来看看在java中,通过sun公司发布的API如何来解析获取XML中的数据信息。    解析XML,有2种技术,一种是DOM,一种是SAX。    DOM全称:Document Object Model(文档对象模型),这种技术会将整个

叫我西蒙哥的随笔 910

利用 POI 从JSP表格中生成excel文件

 我研究了一天,终于得到了比较满意的效果。其中遇到了各种问题,着实耗费了不少时间。在项目中,你可能会遇到将JSP中表格的数据生成报表的应用,下面我介绍下我的做法。因为我的这个项目是用STRUTS 2.0做的,在需要生成报表的这个页面,我新建了一个Button,用来生成excel文件代码如下:table border="0" cellpadding="0" cellspacing

2632

JAVA基于Lucene实现建立索引以及检索

Step 1 利用Lucene建立索引数据库中存放了数据集,对应上万个TXT的文件,表FILE含有两个字段,分别为path和content,依次保存文件的路径和内容。这里,利用Lucene对这些数据建立索引。 package pretreatment;import java.io.File;import java.io.IOException;import java.sql

2389

Javascript 传递中文参数 乱码问题 的解决

最近在一个基于struts 2的项目中,遇到了JS传递中文参数乱码的问题,郁闷的蛮久,终于找到了解决方法。在JS中,我有一个方法,为Form指定Action,如下:function zw(){var url = "***.action?zw="+zw(中文);document.myform.action=url;document.myform.submit()    }这样

2115
上一篇: Survey Applications of Web Services
下一篇: 利用JFreeChart在browser中绘图(Servlet)
TopestCoder
博客等级 码龄19年 12粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值