XML文件解析技术:SAX解析(一)

SAX解析XML文件 SAX解析简介 SAX(Simple API for XML)是一种以事件驱动的XML API,是XML解析的方式之一。DOM解析会将XML全部加载到内存中,再进行解析。SAX与DOM不同的是它边扫描边解析,自顶向下依次解析,由于边扫描边解析,所以它解析XML具有速度快,占用内存少的优点。 SAX解析步骤 SAX解析的核心步骤有如下几步: 得到xml文件对应的资源,可以是xml的输入流,文件和... 阅读详情
SAX解析:非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说, SAX 还比它的替代者 DOM 快许多。
  
 选择 DOM 还是选择 SAX ?
对于需要自己编写代码来处理 XML 文档的开发人员来说,选择 DOM 还是 SAX 解析模型是一个非常重要的设计决策。
区别:
   DOM 采用建立树形结构的方式访问 XML 文档,而 SAX 采用的事件模型。   
       DOM 解析器把 XML 文档转化为一个包含其内容的树,并可以对树进行遍历。
用 DOM 解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用 DOM 解析器的时候需要处理整个 XML 文档,所以对性能和内存的要求比较高,尤其是遇到很大的 XML 文件的时候。由于它的遍历能力,DOM 解析器常用于 XML 文档需要频繁的改变的服务中。

       SAX 解析器采用了基于事件的模型,它在解析 XML 文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX 对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现。
但是用 SAX 解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。
① 准备活动
1. java.util.Stack<E>是java.util.Vector的子类。<E>
    Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push() 和 pop() 操作,以及取栈顶点的 peek() 方法,测试堆栈是否为空的 empty()方法、在堆栈中查找项并确定到栈顶距离的 search 方法。 
   首次创建堆栈时,它不包含数据项。
2.       org.xml.sax.helpers.DefaultHandler
public class DefaultHandler
extends Object
implements EntityResolver, DTDHandler, ContentHandler, ErrorHandler
startElement();接收元素开始的通知。
characters();//接收元素中字符数据的通知。
例如:
创建 H://zmb//Sweet_ForTest_back//source.xml
<?xml version="1.0" encoding="SHIFT_JIS"?>
   <elements>
        <H-element id="h1">
             <moto>_ExtentX</moto>
             <pattern>_ExtentX</pattern>
             <saki>_cx</saki>
        </H-element>
         <H-element id="h2">
             <moto>_ExtentY</moto>
             <pattern>_ExtentY</pattern>
             <saki>_cy</saki>
         </H-element>
               <B-element >
                                    <moto>.Col2</moto>
                                    <pattern>//.Col2</pattern>
                                  <saki>.ColSel</saki>
                   </B-element >
                     <B-element >
                                   <moto>.MaxRows</moto>
                                <pattern>//.MaxRows</pattern>
                                  <saki>.Rows</saki>
                       </B-element >
</elements>
 
解析类:
 package doxml;
import java.util.ArrayList;
         import java.util.HashMap;
         import java.util.List;
         import java.util.Stack;
import javax.xml.parsers.SAXParser;
         import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
         import org.xml.sax.SAXException;
         import org.xml.sax.helpers.AttributesImpl;
         import org.xml.sax.helpers.DefaultHandler;
public class SrcXMLParse extends DefaultHandler {
 
 
 private int iHeader = 0;
 private int iBody = 0;
 // 接收标签内容,因为characters()方法是以字符流的形式接收内容,
 // 如果用string,有可能造成内容缺失
 private StringBuffer xmlContent = new StringBuffer();
 // 声明一个map对象,并不做初始化
 private HashMap<String,String> elementMap = null;
 // 定义list对象,存放xml文件内容的列表
 private List<HashMap<String,String>> headerElementList = new ArrayList<HashMap<String,String>>();
 private List<HashMap<String,String>> bodyElementList = new ArrayList<HashMap<String,String>>();
 
 private Stack<ElementDetails> context = new Stack<ElementDetails>();
 
 /** Default Constructor  */
 public SrcXMLParse(){
  
 }
 /** * Start Document */
 public void startDocument() {
 }
 /** * End Document */
 public void endDocument() {
 }
 
 
 /**  Start Element */
 public void startElement(String uri, String localName, String qName,
   Attributes attribute) throws SAXException {
  // 声明一个ElementDetails类的实例,
  // 这个类存放的就是标签信息,目的是放到堆栈中
  ElementDetails elem = new ElementDetails(uri, localName, qName,
    attribute);
  // 把信息推入堆栈
  context.push(elem);
  if (qName.equals("H-element")) {
   elementMap = new HashMap<String, String>();
   iHeader ++;
  }else if(qName.equals("B-element")){
   elementMap = new HashMap<String, String>();
   iBody ++;
  }
  // 给stringbuffer清空,以便接收新内容
  xmlContent.setLength(0);
 }
 /** * End Element */
 public void endElement(String uri, String localName, String qName)
   throws SAXException {
  // 如果是</moto>
  if (qName.equals("moto")) {
   
   elementMap.put("moto", xmlContent.toString());
   // 如果是</pattern>
  } else if (qName.equals("pattern")) {
   
   elementMap.put("pattern", xmlContent.toString());
   // 如果是</saki>
  } else if (qName.equals("saki")) {
   
   elementMap.put("saki", xmlContent.toString());
   // 如果是</H-element>
  } else if (qName.equals("H-element")) {
   // 说明B-element标签结束了,把内容放到列表里(解析的结果---我们的目标)
   headerElementList.add(elementMap);
  } else if(qName.equals("B-element")){
//(解析的结果---我们的目标)
   bodyElementList.add(elementMap);
  }
        //给stringbuffer清空,以便接收新内容             
  xmlContent.setLength(0);             
  //把最后进来的对象弹出堆栈,因为他的标签已经结束,没有再存在的必要了(后进先出)             
  context.pop();
 }
 
 /**
  * *Handle the context between the element *@param ch[] *@param start
  * *@param length *@return void
  */
 public void characters(char ch[], int start, int length)
   throws SAXException {
  // 把标签内容存到一个stringbuffer对象里,以备处理
  xmlContent.append(ch, start, length);
 }
 
 /** * Get strA value */
 public String getContent() {
  return xmlContent.toString();
 }
 /** * Return headerElementList*/
 public List<HashMap<String,String>> getHeaderElementList() {
  return headerElementList;
 }
 /** * Return bodyElementList*/
 public List<HashMap<String,String>> getBodyElementList() {
  return bodyElementList;
 } 
 // 定义一个内部类,接收标签元素信息,供堆栈用
 private class ElementDetails {
  private String uri;
  private String localName;
  private String qName;
  private Attributes attribute;
  /*
   * Defalut Constructor
   */
  public ElementDetails(String uri, String localName, String qName,
    Attributes attribute) {
   this.uri = uri;
   this.localName = localName;
   this.qName = qName;
   // 注意Attributes是一个接口,所以要把他转化为一个AttributesImpl对象
   this.attribute = new AttributesImpl(attribute);
  }
  public Attributes getAttribute() {
   return attribute;
  }
  public void setAttribute(Attributes attribute) {
   this.attribute = new AttributesImpl(attribute);
  }
  public String getLocalName() {
   return localName;
  }
  public void setLocalName(String localName) {
   this.localName = localName;
  }
  public String getQName() {
   return qName;
  }
  public void setQName(String name) {
   qName = name;
  }
  public String getUri() {
   return uri;
  }
  public void setUri(String uri) {
   this.uri = uri;
  }
 }
 
 public static void main(String[] args) {
  
  SrcXMLParse xmlParse = new SrcXMLParse();  
  SAXParserFactory factory = SAXParserFactory.newInstance();
  String absFilePath = "H://zmb//Sweet_ForTest_back//source.xml";
  try {
   SAXParser parser = factory.newSAXParser();
   parser.parse(absFilePath, xmlParse);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
 }
}
另外startElement方法中的
            String attName = attrs.getQName(0);
            String attValue = attrs.getValue(0);
也是经常使用到的。
例如
publicvoid startElement(String uri, String localName, String qName,
            Attributes attrs) {
        tags .push(qName); // 把项压入栈顶
        // System.out.println(qName);
        if (qName.equals( "emp" )) {
            String attName = attrs.getQName(0);
            String attValue = attrs.getValue(0);
            System. out .print( " <" + qName + " " );
            System. out .println(attName + "=/"" + attValue + "/">" );
        }

SAX技术解析XML文档的全面实例 在SAX解析过程中,事件处理器扮演着极其重要的角色。它相当于整个解析流程中的“大脑”,负责处理在解析XML文档时触发的各种事件。SAX解析器通过回调方法向事件处理器报告当前解析状态,并由事件处理器决定如何响应这些事件。这种机制确保了解析过程中对内存的使用始终保持在最低水平,因为不需要将整个XML文档加载到内存中。 阅读详情

相关推荐

使用SAXReader需要两个jar包

这是SAXReader需要的两个jar包,包括dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar

java使用SAX解析器解析XML文件

SAX,也称为Simple API for XML,是jdk自带的 用于解析 XML 文档 API。它是一种基于流的解析方式,边读取XML边解析,并以事件回调的方式让调用者获取数据。因为是一边读一边解析,所以无论XML有多大,占用的内存都很小,所以 SAX 具有高效的内存管理。 三、XmlRow类 四、SAXHandler类 五、测试 输出: 参考:Parsing an XML File Using SAX ParserParsing an XML File Using StAXexcel-xml-

西凉的悲伤博客 4283

SAX的jar包 SAX的jar包

SAX的jar包 SAX的jar包SAX的jar包 SAX的jar包 SAX的jar包

SAX方式解析XML文档

一、SAX (Simple API for XML)   SAX解析方式是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。     优点: 无需将整个文档加载到内存中, 所以内存消耗少的 ,适合解析特别大的 XML文件。 二、步骤 创建解析工厂:通过 SAXParaserFactory.newInstance()方法获取 创建解析器:...

s_156的博客 563

非华为电脑也能用!华为电脑管家完美安装教程来了

GitHub 上有一个开源项目 ​****​,专门解决“非华为设备无法安装华为电脑管家”的问题。它通过智能模拟 + DLL 劫持技术,绕过官方对硬件型号的检测,让你在联想、戴尔、华硕甚至 DIY 主机上也能流畅使用华为电脑管家!⭐ 项目已获 ​700+ Stars​,社区活跃,持续更新,兼容性优秀!科技不该有围墙。如果你成功在非华为电脑上跑起了 PCManager,欢迎在评论区晒出你的设备型号 + 使用体验!也别忘了把这篇推文分享给同样“眼馋”华为生态的朋友 ~📱 ​关注我们。

程序员朱永胜 4910

大众奥迪诊断不求人:手把手解析SAE J2819(CAN TP2.0)协议报文与连接流程

本文深入解析大众奥迪车型诊断核心标准SAE J2819(CAN TP2.0)协议,详细拆解连接建立流程与报文控制字段。通过实战案例展示通道设置、参数协商等关键步骤,提供诊断设备配置建议和常见故障排查技巧,帮助工程师掌握汽车诊断通信协议的精髓。

weixin_30421809的博客 396

XML解析之SAX解析

import java.io.IOException; import java.io.InputStream; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.

金科APP社团_卞慧君 455

ATE自动化测试设备:硬件与软件的完美协同

本文深入解析了ATE自动化测试设备如何通过硬件与软件的完美协同,实现高效、精准的电子产品测试。文章详细阐述了ATE系统的硬件架构(如测试控制器、仪器模块、开关矩阵)与软件层次(如测试管理、仪器控制、数据分析),并结合实战案例,揭示了软硬件协同设计在提升测试效率与可靠性中的关键作用。

weixin_29218509的博客 166

Java XML解析 - 使用SAX 示例

关键注意(SAX解析XML是基于事件模型的,即以消息机制的。):DefaultHandler类(org.xml.sax.helpers.DefaultHandler),java.io.CharArrayWriter类,javax.xml.parsers.SAXParserFactory类,javax.xml.parsers.SAXParser类函数有:public void start

IT is Alex.Net 2020

安装Quartus-II 13 和Modelsim

目录一、Quartus-II安装1.Quartus-II 13下载2.Quartus-II 13安装3.Quartus-II 13注册二、Modelsim安装 实验目的:安装Quartus-II 13 和Modelsim 实验环境:Windows10 参考资料:Quartus-II安装及使用 一、Quartus-II安装 1.Quartus-II 13下载 正点原子官方资料下载 百度网盘下载链接: https://pan.baidu.com/s/1a9d-bq9RZmWrRV542X4IEA 提取码:

qqq080的博客 8626

Coze智能体开发:扣子空间制作PPT功能

扣子空间内置了丰富的场景模板,涵盖人文历史、学术分享、研究报告、数据分析等场景,可以满足不同用户的需求。 你只需输入与制作 PPT 相关的提示词,Agent 就能基于这些提示词展示思考的过程,并自动生成完整的 PPT。

王国平的博客 2052

Maven项目启动报org.xml.sax.saxception

更新maven项目后,启动项目报错-org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.上网查找许多资料说是我的xml文件有问题,但是项目是svn新更新的,不会存在问题,只能自己动手解决        请教别人后,说是我的编译报错了。

ls_92342的博客 648

12、有杆泵抽油系统:原理、性能与选择

本文全面介绍了有杆泵抽油系统的原理、性能分析和设备选择方法。有杆泵抽油系统广泛应用于石油开采领域,通过地面抽油装置与井下柱塞泵的配合,实现高效、稳定的原油提升。文章详细解析了系统的工作原理、组成结构、光杆运动特性、载荷计算、泵输送能力及功率需求,并提供了抽油装置的选择流程和实际案例分析。此外,还探讨了泵的容积效率影响因素、示功图的作用及系统优化运行的建议,为石油开采工程提供了理论支持和实践指导。

gan8painter的博客 433

Android下Xml解析技术(一)、SAX解析Xml文件

原文地址:http://blog.youkuaiyun.com/ichliebephone/article/details/5971533 Xml文件有许多解析方式,在学习J2EE中就学过很多,比如DOM,DOM4j,SAX,JDOM等等。 DOM:文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。 J

zichuanxiu904的专栏 438

高通SDX35平台 modem启动异常分析

SDX35 MIFI项目在生产时出现modem反复重启问题。经排查发现是modem在初始化GNSS模块时访问了不存在的硬件地址导致崩溃,原因是产线使用的SDX35 000-AB型号芯片阉割了GNSS功能,而本地测试使用的AA型号支持该功能。解决方案是通过修改modem编译选项,采用高通新提供的genlmm2选项(保留IMS和SMS功能但去除GNSS支持),最终解决了启动异常问题并满足VZW认证需求。

四儿家的小祖宗的博客 273

025、Zephyr RTOS设备树覆盖与修改

本文分享了在Zephyr RTOS中使用设备树覆盖(overlay)的实战经验。作者通过一个工业数据采集项目中GPIO无法拉高的调试案例,揭示了设备树覆盖的"叠加"本质而非简单替换。文章详细介绍了覆盖文件的正确编写方式,包括节点引用、pinctrl配置等技巧,并总结了常见陷阱如状态设置不完整、别名冲突等问题。特别强调了条件覆盖的用法和调试方法,最后提出了覆盖文件管理的五项实用原则,强调设备树覆盖是硬件与软件之间的重要契约,需要谨慎对待。全文以实际项目为背景,提供了可操作性强的技术建议。

m0_50546716的博客 33

java--SAX解析xml

有下面的xml文件,如何解析<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> </boo

longtype的博客 427

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

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

Android_Sax引擎读取xml文件

本文内容来自。 SAX技术在处理XML文件时,并不是一次性把XML文件装入内存,而是一边读,一边解析。因此,这就需要处理如下5个分析点。 1、开始分析xml文件。该分析点表示sax引擎刚开始处理xml文件,还没读取xml文件中的内容。对应于DefaultHandler.startDocument方法。 2、开始处理每个xml标签。也就是遇到、这样的起始标记。对应startElement放法。

zlfxy的专栏 703

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

XML解析(一),SAX解析XML

一、概述 SAX,全称Simple API for XML,是一种以事件驱动的XMl API,是XML解析的一种新的替代方法,解析XML常用的还有DOC解析,PULL解析(Android特有),SAX与DOC不同的是它边扫描边解析,自顶向下依次解析,由于边扫描边解析,所以它解析XML具有速度快,占用内存少的优点,对于Android等CPU资源宝贵的移动平台来说是一个巨大的优势。 SAX的优点:解析速

宿罪的博客 3万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

用SAX解析xml文件的例子

 1. Xml技术简介Xml文件有两种约束类型,包括文档类型定义(DTD)和Xml 模式(Schema)。Xml DTD被包含在xml1的标准里。Xml 模式被包含在W3C的标准中。在xml 数据和xml 模式两者之间有很多的区别。A. xml模式支持的数据类型比xml DTD多;B. xml模式在无序的情况下使用起来比xml DTD更方便;C. xml模式支持名字空间,可以在不同的文件中定义相同

上海夜未眠 1万+

Android中使用SAX方式解析XML文件

在Android中解析XML文主要有三种方式,分别为Simple API for XML(SAX)、Document Object Model(DOM)和Android附带的pull解析器。在本篇文章中主要采用例子说明使用SAX方式解析XML文件。          SAX是一

Android-Idea 5541

SAX和DOC解析XML文件

前言:在进入正题之前,我觉得很有必要让大家回顾一下最常用的XML文件解析的两种方式:SAX解析 和 DOC解析 1. SAX解析 (Simple API for XML) 定义:SAX是Simple API for XML的缩写,它是事件驱动的,它并不需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。 优点:1....

欧阳俞峰的个人博客 1050

【JavaWeb】xml文件_SAX解析(xml文件的解析)

SAX解析 1.编程理念:基于事件编程的原理 2.(1)SAX解析的特点:读取一点,处理一点,解析一点    (2)DOM解析的特点:将整个xml文件加载完毕之后,才开始进行解析(一次性解析)     DOM解析的弊端:使用DOM解析的xml文件内容不能太大,否则会造成内存溢出 3.SAX解析的优点:占用内存小,从占用内从角度考虑SAX解析优于DOM解析 4.SAX解析图解:

午后红茶 1157
上一篇: Java GUI:在Java中对于TextField的监听
下一篇: 设计模式之一 ————抽象工厂模式
java_user
博客等级 码龄21年 11粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值