JAXP(Java API for XML Parsing) 收藏(转)

JAXP(Java API for XML Parsing) 

过去几年中,XML分折已经被标准为两个不同的处理模型:SAX(Simple API for XML)以及DOM(Document Object Model)。 

这两个标准提供了各种API以便开发人员处理XML数据,分别适用于不同的分折需要。JAXP是SUN公司在1999年后期提出的,它是一个API,但更准确地说,它应该是一个抽象层。JAXP并不提供解折功能!没有SAX、DOM或其它XML解折API,我们无法解折XML。 
一、SAX(Simple API for XML) 
SAX是基于事件的处理模型,在此模型中,解折程序按序列顺序解释数据元素,同时基于所选择的结构回调函数。它最大的优点是:它并不把任何XML文档装载进内存,因此被认为是非常迅速和轻便的。它使用一个序列只读的方法,并不支持对XML元素的随机访问。 
基本实现由以下三个骤组成 
1、实现一个扩展DefaultHandler的类,并为每种类型的结构包含回调方法。 
2、初始化一个新的SAXParser类。Parser读到XML源文件,并触发DefaultHandler类中所实现的一个回调方法 
3、须序读取XML源文件。在须序读取中,无法随机访问结构中的元素。剩下的工作取决于Handler类中你的实现方案。 
示例 
书写一个用于读取的XML文檔test.xml,具体内容如下: 
<?xml version="1.0" encoding="UTF-8"?> 
<simple date="21/2/2006"> 
        <name>wang</name> 
        <location>China DongGuan</location> 
</simple> 

实现一个扩展DefaultHandler的类SaxTestHandler.java代码如下 
package mypack; 

import org.xml.sax.Attributes; 
import org.xml.sax.SAXException; 
import org.xml.sax.helpers.DefaultHandler; 

public class SaxTestHandler extends DefaultHandler { 

        // 重载DefaultHandler类的方法 
        // 以拦截SAX事件通知。 
        //      

        /* 开始解折文析进执行 */ 
        public void startDocument() throws SAXException { 
                System.out.println("SAX Event: START DOCUMENT"); 
        } 

        /* 结束解折时执行 */ 
        public void endDocument() throws SAXException { 
                System.out.println("SAX Event: END DOCUMENT"); 
        } 

        /* 遇到一个节点时执行 */ 
        public void startElement(String namespaceURI, String localName, 
                        String qName, Attributes attr) throws SAXException { 
                System.out.println("SAX Event: START ELEMENT[ " + localName + " ]"); 
                // System.out.println(namespaceURI+";;;"+qName); 

                // 如果有属性,打印属性和属性值 
                for (int i = 0; i < attr.getLength(); i++) { 
                        System.out.println(" ATTRIBUTE: " + attr.getLocalName(i) 
                                        + " VALUE: " + attr.getValue(i)); 
                } 
        } 

        // 元素数据 
        public void characters(char[] ch, int start, int length) 
                        throws SAXException { 
                String s = new String(ch, start, length); 
                System.out.println(s); 
        } 
} 

这个类实现了内容处理接口的实现,该实现只做了一个简单的处理:把有关XML文文件的内容打印到系统控制台。 

一个SAXParser类,用于指定解折器并读取XML文档然后调用Handler类的回调方法。代码如下: 
package mypack; 

import java.io.FileReader; 

import org.xml.sax.InputSource; 
import org.xml.sax.XMLReader; 
import org.xml.sax.helpers.XMLReaderFactory; 

public class SAXTest { 

        /** 
         * @param args 
         */ 
        public static void main(String[] args) { 
                // TODO 自动产生方法 
                try { 
                        // 建立SAX2解折器 
                        XMLReader xr = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); 

                        // 安装ContentHandler内容处理类 
                        SaxTestHandler handler=new SaxTestHandler(); 
                        xr.setContentHandler( handler ); 

                        // 解折文檔 
                        xr.parse(new InputSource(new FileReader("D:\\MyProject\\Ewebsite\\XML\\JavaSource\\test.xml"))); 
                } catch (Exception e) { 
                        e.printStackTrace(); 
                } 
        } 
} 

执行SAXTest可以打印出test.xml文件的内容(节点名,节点的属性及值,元素内容) 

二、DOM(Document Object Model) 
XML 将数据组织为一棵树,所以DOM就是对这棵树的一个对象描叙。通俗的说,就是通过解折XML文档,为XML文文件在逻辑上建立一个树模型,树的节点就是一个个对象。我们通过存到这些对象就能够存取XML文档的内容。当XML文档很大时,这个过程可能需要一块相当大的内存,这可能出现内存不足的现象。 

使用DOM处理的基本步骤如下: 
1、实例一个DOMParser。 
2、得到一个Document对象。 
3、使用Document对象访问代表了XML文文件中元素的节点。 

XML源被完全读入内存,并用Document对象表示。这就使得应用程序能够随机访问任何节点,这一点也是SAX所不能做到的。 

一个读取XML文檔的DOM处理示例 
package mypack; 

import java.io.FileReader; 
import java.io.IOException; 

import javax.xml.parsers.ParserConfigurationException; 

import org.apache.xerces.parsers.DOMParser;//导入DOMParser解折器 
import org.w3c.dom.Document; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.xml.sax.InputSource; 
import org.xml.sax.SAXException; 

public class DOMTest { 

        /** 
         * @param args 
         * @throws ParserConfigurationException 
         * @throws IOException 
         * @throws SAXException 
         */ 
        public static void main(String[] args) throws ParserConfigurationException, 
                        SAXException, IOException { 
                // TODO 自动产生方法 Stub 

                // 实例解折器 
                DOMParser parser = new DOMParser(); 
                // 以Docment对象的形式获取DOM树 
                parser.parse(new InputSource(new FileReader( 
                                "D:\\MyProject\\Ewebsite\\XML\\JavaSource\\test.xml"))); 
                Document doc = parser.getDocument(); 
                // 使用Document对象的方法得到NodeList对象 
                NodeList nl = doc.getElementsByTagName("name"); 
                System.out.println(nl.getLength());// 标签的次数 
                Node my_node = nl.item(0); 
                // 输出name标签的元素数据 
                String name = my_node.getFirstChild().getNodeValue(); 
                System.out.println(name); 
        } 
} 

现在,既然我们已经能够从XML文件中提取出数据了,我们就可以把这些数据用在合适的地方,来构筑应用程序。 

DOM对象详解 
1.基本的DOM对象 

DOM的基本对象有5个:Document,Node,NodeList,Element和Attr。下面就这些对象的功能和实现的方法作一个大致的介绍。 

Document 对象代表了整个XML的文档,所有其它的Node,都以一定的顺序包含在Document对象之内,排列成一个树形的结构,程序员可以通过遍历这颗树来得到XML文档的所有的内容,这也是对XML文档操作的起点。我们总是先通过解析XML源文件而得到一个Document对象,然后再来执行后续的操作。此外,Document还包含了创建其它节点的方法,比如createAttribut()用来创建一个Attr对象。它所包含的主要的方法有: 

createAttribute(String):用给定的属性名创建一个Attr对象,并可在其后使用setAttributeNode方法来放置在某一个Element对象上面。 

createElement(String):用给定的标签名创建一个Element对象,代表XML文档中的一个标签,然后就可以在这个Element对象上添加属性或进行其它的操作。 

createTextNode(String):用给定的字符串创建一个Text对象,Text对象代表了标签或者属性中所包含的纯文本字符串。如果在一个标签内没有其它的标签,那么标签内的文本所代表的Text对象是这个Element对象的唯一子对象。 

getElementsByTagName(String):返回一个NodeList对象,它包含了所有给定标签名字的标签。 

getDocumentElement():返回一个代表这个DOM树的根节点的Element对象,也就是代表XML文档根元素的那个对象。 

Node 对象是DOM结构中最为基本的对象,代表了文档树中的一个抽象的节点。在实际使用的时候,很少会真正的用到Node这个对象,而是用到诸如 Element、Attr、Text等Node对象的子对象来操作文档。Node对象为这些对象提供了一个抽象的、公共的根。虽然在Node对象中定义了对其子节点进行存取的方法,但是有一些Node子对象,比如Text对象,它并不存在子节点,这一点是要注意的。Node对象所包含的主要的方法有: 

appendChild(org.w3c.dom.Node):为这个节点添加一个子节点,并放在所有子节点的最后,如果这个子节点已经存在,则先把它删掉再添加进去。 

getFirstChild():如果节点存在子节点,则返回第一个子节点,对等的,还有getLastChild()方法返回最后一个子节点。 

getNextSibling():返回在DOM树中这个节点的下一个兄弟节点,对等的,还有getPreviousSibling()方法返回其前一个兄弟节点。 

getNodeName():根据节点的类型返回节点的名称。 

getNodeType():返回节点的类型。 

getNodeValue():返回节点的值。 

hasChildNodes():判断是不是存在有子节点。 

hasAttributes():判断这个节点是否存在有属性。 

getOwnerDocument():返回节点所处的Document对象。 

insertBefore(org.w3c.dom.Node new,org.w3c.dom.Node ref):在给定的一个子对象前再插入一个子对象。 

removeChild(org.w3c.dom.Node):删除给定的子节点对象。 

replaceChild(org.w3c.dom.Node new,org.w3c.dom.Node old):用一个新的Node对象代替给定的子节点对象。 

NodeList对象,顾名思义,就是代表了一个包含了一个或者多个Node的列表。可以简单的把它看成一个Node的数组,我们可以通过方法来获得列表中的元素: 

GetLength():返回列表的长度。 

Item(int):返回指定位置的Node对象。 

Element对象代表的是XML文档中的标签元素,继承于Node,亦是Node的最主要的子对象。在标签中可以包含有属性,因而Element对象中有存取其属性的方法,而任何Node中定义的方法,也可以用在Element对象上面。 

getElementsByTagName(String):返回一个NodeList对象,它包含了在这个标签中其下的子孙节点中具有给定标签名字的标签。 

getTagName():返回一个代表这个标签名字的字符串。 

getAttribute(String):返回标签中给定属性名称的属性的值。在这儿需要主要的是,应为XML文档中允许有实体属性出现,而这个方法对这些实体属性并不适用。这时候需要用到 getAttributeNodes()方法来得到一个Attr对象来进行进一步的操作。 

getAttributeNode(String):返回一个代表给定属性名称的Attr对象。 

Attr 对象代表了某个标签中的属性。Attr继承于Node,但是因为Attr实际上是包含在Element中的,它并不能被看作是Element的子对象,因而在DOM中Attr并不是DOM树的一部分,所以Node中的getparentNode(),getdivviousSibling()和 getnextSibling()返回的都将是null。也就是说,Attr其实是被看作包含它的Element对象的一部分,它并不作为DOM树中单独的一个节点出现。这一点在使用的时候要同其它的Node子对象相区别。 

需要说明的是,上面所说的DOM对象在DOM中都是用接口定义的, DOM其实可以在任何面向对象的语言中实现,只要它实现了DOM所定义的接口和功能就可以了。 

三、JAXP 
1、用SAX处理XML 
下面是JAXP的操作示范 
(1)   创建已实现的Handler类的实例。 
(2)   利用SAXParserFactory的静态方法newInstance()方法获取一个factory类。 
(3)   通过newSAXParser()静态方法从factory中获取SAX分折器。 
(4)   分折XML数据:调用SAXParser的分折方法,把XML输入作为第一个参数,而Handler实现方案作为第二个参数。 


示例代码如下: 
package mypack; 

import java.io.IOException; 

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

import org.xml.sax.SAXException; 
import org.xml.sax.helpers.DefaultHandler; 

public class JaxpSaxTest { 
        /** 
         * @param args 
         * @throws SAXException 
         * @throws ParserConfigurationException 
         * @throws IOException 
         */ 
        public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { 
                // TODO 自动产生方法 Stub 
                //实例一个内容处理类 
                DefaultHandler handler=new SaxTestHandler(); 
                //得到厂类 
                SAXParserFactory factory=SAXParserFactory.newInstance(); 
                //在厂类中获取SAX分折器 
                SAXParser parser=factory.newSAXParser(); 
                //分折XML数据 
                parser.parse("D:\\MyProject\\Ewebsite\\XML\\JavaSource\\test.xml",handler); 
        } 
} 

2、用DOM处理 

步聚如下: 
(1)初始化一个新的Builder类。Builder类负责读取XML数据并把XML数据转化为树状表示。 
(2)一旦数据转化完成,即创建Document对象。一旦对象创建后,以后所有的对XML文档的操作都与解折器无关了。 
(3) 使用Document对象访问代表了XML文文件中元素的节点。 

示例代码如下: 
package mypack; 

import java.io.IOException; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 

import org.w3c.dom.Document; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.xml.sax.SAXException; 

public class JaxpDomTest { 
        /** 
         * @param args 
         * @throws ParserConfigurationException 
         * @throws IOException 
         * @throws SAXException 
         */ 
        public static void main(String[] args) throws ParserConfigurationException, 
                        SAXException, IOException { 
                // TODO 自动产生方法 Stub 

                // 实例一个Builder类,用DocumentBuilder的目的是为了创建与具体解折器无关的程序 
                // 厂类的静态方法newInstance()被调用时,它根据一个系统变量来决定具体使用哪一个解折器。 
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
                DocumentBuilder builder = factory.newDocumentBuilder(); 

                // 创建Document对象 
                Document document = builder 
                                .parse("D:\\MyProject\\Ewebsite\\XML\\JavaSource\\test.xml"); 

                // 使用Document对象的方法得到NodeList对象 
                NodeList nl = document.getElementsByTagName("name"); 
                System.out.println(nl.getLength());// 标签的次数 
                Node my_node = nl.item(0); 
                // 输出name标签的元素数据 
                String name = my_node.getFirstChild().getNodeValue(); 
                System.out.println(name); 
        } 

} 



本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/sukyle/archive/2009/05/18/4199459.aspx
Vue3 - 完美解决 vite 打包后在本地浏览器直接打开运行,build 打包后双击 index.html 直接以 file 协议运行网站(资源、接口等正常访问,和部署到服务器运行效果一样) vue3vite怎么支持file协议本地打开,vite打包文件如何支持files协议,支持双击即可打开网页,vue3vite打包后双击本地运行,vue3vite打包后怎么直接在浏览器双击打开访问,vite打包后显示空白,vite如何支持本地file协议打开,vue3vite打包后如何本地查看网站,vue3vite项目打包后本地启动白屏怎么办,vite打包后的代码如何在本地运行,vite+vue3打包在fIle本地index.html打开项目,打包后如何直接打开index.html文件,vue3 阅读详情

相关推荐

离散数学期末复习笔记【精华版】

文章目录前言一、????理逻辑1. 命题逻辑2. 等值演算3. 主合取范式、主析取范式4. 【题】推理证明5. 辖域、自由变元、约束变元二、????合1. 环和、环积,幂集,笛卡尔乘积三、 ????????关系1. 自反、对称、传递2&3. 合成运算,逆关系、闭包4. 哈斯图、上下界、偏序5. 等价关系、划分四、????1. 幺元(么元、单位元)、零元、逆元,半群、群、阿尔贝群、独异点、循环独异点2. 【题】由表判断3. 【题】证明五、????论1. 简单图、平凡图、多重图、子图、补图、出度、入度、

林大夕可的博客 17万+

jax-rs jax-ws_Google App Engine JAX-RS REST服务

jax-rs jax-ws 在本文中,您将学习如何使用JAX-RS参考实现(Jersey)创建REST服务并将其部署在Google AppEngine上。 先决条件 对于本教程,您将需要: 一个Google AppEngine帐户 Eclipse Galileo(3.5.x) 适用于Java的Google App Engine SDK 按照此处所述安装Ec...

最佳 Java 编程 179

利用PLECS实现Boost变换器的闭环控制仿真与优化

本文详细介绍了如何利用PLECS仿真软件实现Boost变换器的闭环控制与优化。从基础原理到开环系统搭建,再到闭环控制设计与动态优化,提供了完整的仿真实践指南。通过PLECS的仿真功能,工程师可以有效诊断问题、优化参数,并实现高性能的DC-DC变换器设计。

weixin_42527401的博客 325

JAX-RS和OpenAPI对Hypermedia API的支持:任重而道远

或早或晚,大多数积极使用REST(ful) Web服务和API的开发人员都偶然发现了这种真正的外星事物,即HATEOAS : 超文本作为应用程序状态的引擎 。 对HATEOAS是什么以及它与REST的关系的好奇最终将导致发现Richardson成熟度模型 ,该模型使REST和RESTful的行业定义神秘化。 后者是一个启发,但提出了一个问题:这些年来,我们是否一直在错误地进行REST ? ...

最佳 Java 编程 193

算法交易VWAP&TWAP

VWAP的一些算法模型细节参考博客地址http://blog.sina.com.cn/s/blog_ad47bc5b01014elx.html 日内交易量预测模型http://blog.sina.com.cn/s/blog_976461170102v43p.html 算法交易其实主要是用在基金公司、券商量化比较多。例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完

shulixu的博客 1万+

Mathtype公式排版避坑指南:固定行距20磅下如何完美显示上下标(实测有效)

本文针对学术论文在固定行距20磅要求下,Mathtype公式上下标显示不全或被裁剪的问题,提供了实测有效的解决方案。文章深入剖析了固定行距与公式排版的冲突原理,并详细指导用户通过调整Mathtype的“定义间距”参数(如下标深度、上标高度),以及利用“格式化公式”功能进行批量处理,确保公式在严格遵守期刊格式要求的同时清晰完整显示。

weixin_29228203的博客 1069

JAXP(Java API for XMLProcessing)知识总结

XML的解析1.xml解析方式 DOM方式:Document Object Model,文档对象模型,W3C推荐的使用方式。 SAX方式:Simple API for XML,不是官方标准,但是属于开源社区XML-DEV,几乎所有的XML解析器都支持。2.xml解析开发包 JAXP:SUN公司推出的解析标准实现。 Dom4J:Dom4J开源社区提供的解析开发包(sun公司的一些技术实现都在使

404 Not Found 1005

一文读懂AI大模型时代的RAG技术

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合检索技术与生成模型的技术架构,旨在通过动态引入外部知识库增强大语言模型(LLM)的生成能力。其核心思想是通过检索系统从外部数据源(如企业知识库、实时文档等)获取相关信息,并将检索结果作为上下文输入生成模型,以提高生成答案的准确性、时效性和专业性

awei0916的专栏 2119

Java API for XML Parsing(JAXP)演进

 http://www.syue.com/Java/HTML/75888.html简介    在1998年W3CXML1.0推荐标准发布之后,XML就开始变得很流行。Sun公司就是在那时候规范Java Community Process (JCP),同时JAXP(JSR-05)的第一版在2000早些时候发布了。这个版本得到了很多工业集团的支持,譬如(以年月次序排列)BEA Systems, F

燕窝 1290

液晶屏LVDS接口:【图文详讲】

​LVDS(Low Voltage Differential Signaling,即低电压差分信号)接口又称RS-644总线接口,是20世纪90年代才提出的一种数据传输和接口技术。LVDS接口是美国NS美国国家半导体公司为克服以TTL电平方式传输宽带高码率数据时功耗大,电磁干扰大等缺点而研制的一种数字视频信号传输方式

weixin_66299220的博客 1万+

图文详解秋叶ComfyUI整合包开启密码访问教程(附内网穿透实战经验) ComfyUI密码、ComfyUI-Login、ComfyUI内网穿透、秋叶整合包、ComfyUI安全防护

想远程访问 ComfyUI(跨设备或公网)不希望任何人随意使用或篡改服务需要给 ComfyUI 添加登录验证机制只要按照本文教程,安装插件,并设置好用户名密码,你就能把服务加上一道强力的门槛。📌配合ngrokfrp等内网穿透工具使用公网域名推荐启用 HTTPS(SSL证书可以用宝塔/ZeroSSL 申请)密码可以设置复杂一些,定期更换更安全📬如果你在配置过程中遇到问题,欢迎评论区留言交流,或者私信我,后续我也会更新更多 ComfyUI 插件教程、安全部署经验等内容。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2731

jaxp相关

JAXP 专述  作者:Brett Mc…    文章来源:IBM developerWorks    点击数:179    更新时间:2006-4-27   这是篇细探 JAXP,Sun 的 Java API for XML 的文章,帮助解除了有关 JAXP 本质和服务目的的疑惑。本文讲解了 JAXP 的基本概念,演示 XML 语法分析为什么需要 JAXP,并显示如何轻易更改 JAXP 使用的语

lxgood8的专栏 1259

【OCPP】ocpp1.6协议3.3章节:功能配置文件及接口

Smart Charging Profile中定义了4个接口请求,即GetCompositeSchedule、ClearChargingProfile、SetChargingProfile和ClearCache等。Smart Charging: 包含智能充电相关的功能,如计划充电,报告充电计划,并改变充电速度。Core: 包含电动汽车充电相关的基础功能,如启动和停止充电,更改充电配置,报告充电状态等。Reservation: 包含预约服务相关的功能,如创建,取消和更改预约。

qq_53871375的博客 2170

jaxp对xml的操作(JAXP的演进)

最近重新温习了Jaxp对xml的操作,在网上搜索了一些这方面的资料!觉得非常好,在此mark一下。感觉Sun的东西才是王道!英文版的资料更加好! JAXP的演进 作者:Rahul Srivastava Rahul Srivastava;SJTUer 原文地址:http://www.xml.com/pub/a/2005/07/06/jaxp.html 中文地址:ht...

shellfj的博客 178

深度学习工具包 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")

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

JAXP(Java API for XML Parsing) 收藏

JAXP(Java API for XML Parsing) 过去几年中,XML分折已经被标准为两个不同的处理模型:SAX(Simple API for XML)以及DOM(Document Object Model)。 这两个标准提供了各种API以便开发人员处理XML数据,分别适用于不同的分折需要。JAXP是SUN公司在1999年后期提出的,它是一个API,但更准确地说,它应该...

坚持学习,天天进步 159

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JAXP(Java API for XML Parsing)

JAXP(Java API for XML Parsing)  过去几年中,XML分折已经被标准为两个不同的处理模型:SAX(Simple API for XML)以及DOM(Document Object Model)。这两个标准提供了各种API以便开发人员处理XML数据,分别适用于不同的分折需要。JAXP是SUN公司在1999年后期提出的,它是一个A

sukyle的专栏 1257

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JAXP包说明

JAXP包说明(JAVA API for XML Parsing) 1. javax.xml.parsers.* 定义DOM和SAX的工厂获取,DOM的具体规范在org.w3c.dom.*; SAX的具体规范在org.xml.sax.*,需要使用的具体解析器名称(DOM解析器/SAX解析器)由JRE系统属性或者JAXP配置(jxrp.properties)或者jar/META-INF/Serv

Jeffrey's 专栏 896

Java JAXP 解析XML

用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API (Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器。 JAXP接口包含了三

vianoz 552

Java与XML(一)

JAXP一、概述         XML分析目前已经被标准化为两个,SAX(Simple API for XML)和DOM(Document Object Model,文档对象模型)。这两个标准提供了各种API以便于开发人员处理XML数据,分别适用于不同的分析需要          为了解决这些困难,Sun  Microsystem在1999年后期提出了JAXP(Java API fo

qeilf的专栏 821

JAXP 再述??Sun 的 Java API for XML Parsing,1.1 版(转)

JAXP 再述??Sun 的 Java API for XML Parsing,1.1 版(转)[@more@]   继上篇关于 JAXP(Sun 的 Java API for XML Parsing)的文章之后,在本续篇中,...

ciya3282的博客 149

Java 解析 xml 大全

一、前言用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器。JAXP接口

xiangsuixinsheng的专栏 1142

JAVA解析XML DOM

<br />一、前言<br />用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器。<br />JAXP接口包含了三个包:<br />(1)org.w3c.dom W3C推荐的用于XML标

山月神话 703

解析XML文档

DOM:Document Object Model:文档对象模型,它是由W3C推荐的处理XML文档规范 SAX:Simple API for XML,是整个XML行业的事实规范 JAXP:Java解析XML文档的API成为JAXP,它k的全称是Java API for XML,JAXP作为JDK的一部分发布,但它仅仅是一些API接口,接口的设计允许应用程序咋子不用的XML解析器之间切换 Do...

成长日记的博客 344

25XML解析--DOM

1DOM:Document Object Model (文档对象模型)。 2对于XML应用开发来说,DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范 3要严格区分XML文档树中的根结点与根元素结点:根节点(Document)代表的是XML文档本身,是我们解析X...

chunhuo3827的博客 94
上一篇: java多线程及线程池小结
下一篇: JAVA优化编程(转)
echozhjun
博客等级 码龄18年 9粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值