Java四种读取和创建XML文档的例子教程

四种方法解析XML文档:Dom、SAX、JDOM、dom4j


1、了解XML

XML,即可扩展标记语言(ExtensibleMarkupLanguage),标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。它和JSON都是一种数据交换格式。


作用:解析XML文档,创建XML文档。


2、什么是可扩展标记语言?

·可扩展标记语言是一种很像超文本标记语言的标记语言。

·它的设计宗旨是传输数据,而不是显示数据。

·它的标签没有被预定义。您需要自行定义标签。

·它被设计为具有自我描述性。

·它是W3C的推荐标准。


3、解析XML文档的四种方式: 四种方法解析XML文档:Dom、SAX、JDOM、dom4j


第一种:DOM的全称是DocumentObjectModel,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。


4.1、开始动手

第一种:DOM的XML文件读取:——看注释

1.DocumentBuilderFactory.newInstance()创建DocumentBuilderFactory的对象

2.DocumentBuilder获得具体的DOM解析器。

3.Parse(newFile())获取文档xml路径。


4.1.1准备XML文档:这里我用的是languages.xml

<?xml version="1.0" encoding="UTF-8"?>
<Languages cat="it">
	<lan id="1">
		<name>Java</name>
		<ide>Eclipse</ide>
	</lan>
	<lan id="2">
		<name>Swift</name>
		<ide>Xcode</ide>
	</lan>
	<lan id="3">
		<name>C#</name>
		<ide>Visual Studio</ide>
	</lan>
</Languages>

4.1.2看看DOM解析的例子

package dom;
import java.io.File;
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.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

/*
 * DOM  Class  Reader
 * 
 */
public class ReaderXML {
	public static void main(String[] args) {
		try {
			
			//1。获取DOM 解析器的工厂实例。
			DocumentBuilderFactory factory  = DocumentBuilderFactory.newInstance();
			//2。获得具体的DOM解析器。
			DocumentBuilder builder = factory.newDocumentBuilder();
			
			//3。获取文件
			Document document = builder.parse(new File("languages.xml"));

                       //4。获取根元素
			Element root = document.getDocumentElement();
			System.out.println("cat="+root.getAttribute("cat"));
			//5。获取根节点[有多个节点]
			NodeList list = root.getElementsByTagName("lan");
			
			for (int i = 0; i < list.getLength(); i++) {
				//Node lan = list.item(i);
				//System.out.println("id="+lan.getNodeType());
				System.out.println("---------------");
			    Element lan =  (Element) list.item(i);
			    System.out.println("id=" + lan.getAttribute("id"));
			    
				//获取子节点集合
				NodeList clist = lan.getChildNodes();
				for (int j = 0; j < clist.getLength(); j++) {
					//获取下标
					Node c = clist.item(j);
					//把空格删除[获取属性名和值]
					if (c instanceof Element) {
						System.out.println(c.getNodeName()+"="+c.getTextContent());
					}
				}
			}
								
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}


4.2第一种:DOM的XML文件创建

1.DocumentBuilderFactory.newInstance()获取DOM解析器的工厂实例。

2.DocumentBuilder获得具体的DOM解析器。

3.创建一个xml文档,获得Document对象(根结点)(createElement)。

4.创建根元素、根结点、setAttribute("根结点名");

5.添加根节点的值:setTextContent(“Value”);

6.子节点添加到根节点:appendChild(“根结点”);

7.输出:TransformerFactory!

package dom;

import java.io.File;
import java.io.StringWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;



/*
 * DOM Class Great
 * 
 */
public class Creat_XML {
  public static void main(String [] ags){
	  
	 try {
		 
	 DocumentBuilderFactory factory =  DocumentBuilderFactory.newInstance();
	 DocumentBuilder builder = factory.newDocumentBuilder();
		 
         Document document = builder.newDocument();	
	 //创建属性名、赋值
         Element root = document.createElement("Languages");
         root.setAttribute("cat", "it");

                //创建第一个根节点、赋值
		 Element lan = document.createElement("lan");
		 lan.setAttribute("id", "1");
		 Element name = document.createElement("name");
		 name.setTextContent("java");
		 Element ide = document.createElement("IDE");
		 ide.setTextContent("Eclipse");
		 lan.appendChild(name);
		 lan.appendChild(ide);
		 <span style="font-size:14px;"></span><pre name="code" class="java">                 //创建第二个根节点、赋值
		 Element lan2 = document.createElement("lan");
		 lan2.setAttribute("id", "2");
		 Element name2 = document.createElement("name");
		 name2.setTextContent("Swift");
		 Element ide2 = document.createElement("ide");
		 ide2.setTextContent("XCode");
		 lan2.appendChild(name2);
		 lan2.appendChild(ide2);
		 
                 //添加到属性中、
		 root.appendChild(lan);
                 root.appendChild(lan2);	
                 document.appendChild(root);
		 
                //定义了用于处理转换指令,以及执行从源到结果的转换的
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer transformer = transformerFactory.newTransformer();
		transformer.setOutputProperty("encoding", "UTF-8");
			
		StringWriter writer = new StringWriter();
		transformer.transform(new DOMSource(document), new StreamResult(writer));
		System.out.println(writer.toString());
			
		transformer.transform(new DOMSource(document), new StreamResult(new File("newxml.xml")));   
		
		
		
		
		
	} catch (ParserConfigurationException | TransformerException e) {
		e.printStackTrace();
	}
  }
}


第二种:dom4j是一个Java的XMLAPI,类似于jdom,用来读写XML文件的,dom4j是一个十分优秀的JavaXMLAPI,具有性能优异、功能强大和极其易使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBMdeveloperWorks上面还可以找到一篇文章,对主流的JavaXMLAPI进行的性能、功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包,Hibernate也用它来读写配置文件。

下载:dom4j架包!

第二种:Dom4j创建XML步骤:

1.设置根节点:DocumentHelper.createElement("根节点名");

2.读取doucment元素:DocumentHelper.createDocument(root);

3.添加根节点:addAttribute("name","value");

4.添加字节点、赋值:addElement("name");setText("value");

5.添加到根节点:XMLWriterxmlWriter=newXMLWriter();xmlWriter.write(document);

package dom4j;

import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;


public class Greate_dom4j {
	    public static void main(String[] args) throws Exception  
	    {  
	        // 创建文档并设置文档的根元素节点 
	        Element root = DocumentHelper.createElement("books");
	        Document doucment = DocumentHelper.createDocument(root);
	        //根节点
	        root.addAttribute("name","bookvalue");
	        //子节点
	        Element element1 = root.addElement("author1 ");
	        element1.addAttribute( "name", "James1" );
	        element1.addAttribute( "location1", "UK1" );
	        element1.addText( "James Strachan1" );
	        
	        Element element = root.addElement("author2 ");
	        element.addAttribute( "name", "chen" );
	        element.addAttribute( "kenken", "ZK" );
	        element.addText( "chen kenken" );
	        //添加
	        XMLWriter xmlwriter2 = new XMLWriter();
	        xmlwriter2.write(doucment);
	        //创建文件
	        OutputFormat format = new OutputFormat();

	        FileOutputStream file = new FileOutputStream("books.xml");
	        XMLWriter xml = new XMLWriter(file);
	        
	        xml.close();
	    }

		
	}  


第二种:Dom4j读取XML步骤:

1.获取SAM接口:SAXReadersaxReader=newSAXReader();

2.获取XML文档:Documentdoc=saxReader.read(newFile("name.xml"));

3.获取根节点:Elementroot=doc.getRootElement();

4.获取子节点:root.elementIterator();

5.获取孙节点:attributeIterator();


package dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


/*
 * dom4j Class Reader
 * 
 */

public class Rreader_dom4j{
	public static void main(String[] args) throws Exception{
		
		//1.获取SAM接口:
		SAXReader saxReader = new SAXReader();
		//2.获取XML文件:
		Document doc = saxReader.read(new File("newxml.xml"));
		//3.获取根节点:
		Element root = doc.getRootElement();		
		System.out.println("根节点: " + root.getName());		
		
		System.out.println("----------------");
		
		//获取子节点
		Iterator<?> it = root.elementIterator();
		while(it.hasNext()){
			Element elem = (Element) it.next();
			//获取属性名属性值
			List<Attribute> li = elem.attributes();
			for (Attribute att : li ) {
				System.out.println(att.getName() + "  " + att.getValue() );
			}
					
			//获取子节的子节点
			Iterator<?> ite = elem.elementIterator();
			while(ite.hasNext()){
				Element child = (Element) ite.next();
				System.out.println(child.getName() + "  " + child.getStringValue());
			}
			
			System.out.println("----------------");
		}

		
	}
}



第三种:JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。JDOM直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念等),把SAX和DOM的功能有效地结合起来。

JDOM是用Java语言读、写、操作XML的新API函数。在直接、简单和高效的前提下,这些API函数被最大限度的优化。


3.1、JDOM读取XML:

package com.jdom;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;


/**
 * JDOM Class Reader
 * 
 */
public class ReaderJDom {
	public static void main(String[] args) {
	
		try {
			
			//1.创建一个SAXBuilder的对象
		    SAXBuilder saxBuilder = new SAXBuilder();
			//2.创建一个输入流,将xml文件加载到输入流中
			InputStream in = new FileInputStream("Book.xml");			
			InputStreamReader isr = new InputStreamReader(in, "UTF-8");	
			//3.通过saxBuilder的build方法,将输入流加载到saxBuilder中
			Document document = saxBuilder.build(isr);			 
			//4.通过document对象获取xml文件的根节点
			Element rootElement = document.getRootElement();
			//5.获取根节点下的子节点的List集合
			List<Element> elementList = rootElement.getChildren();
			
			for (Element element : elementList) {
				// 解析文件的属性集合
				List<Attribute> list = element.getAttributes();
				for (Attribute attr : list) {
					// 获取属性名
					String attrName = attr.getName();
					// 获取属性值
					String attrValue = attr.getValue();
					System.out.println(attrName +"="+ attrValue);
					
					// 对book节点的子节点的节点名以及节点值的遍历
					List<Element> listChild = element.getChildren();
					for (Element child : listChild) {
						System.out.println(child.getName() +"="+child.getValue());
				    }	
					
				}
				System.out.println("——————————————————————");
			}
			
		
		    }catch (FileNotFoundException e) {
					e.printStackTrace();
			}catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}catch (JDOMException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
	}
}


3.2、JDOM创建xml:

package com.jdom;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

/**
 * Create Class
 * 
 */
public class CreateJDom {
	public static void main(String[] args) {
		
		//1.生成一个根节点
		Element rss = new Element("Languages");
		//2.为节点添加属性
		rss.setAttribute("Cat","it");
		//3.生成一个document对象
		Document document = new Document(rss);
		
		//添加元素
		Element lan = new Element("lan");
		lan.setAttribute("id","1");
		Element name = new Element("name");
		name.setText("java");
		lan.addContent(name);
		
		Element IDE = new Element("IDE");
		IDE.setText("eclipse");
		lan.addContent(IDE);
		rss.addContent(lan);
		
		//添加元素
		Element lan2 = new Element("lan");
		lan2.setAttribute("id","1");
		Element name2 = new Element("name");
		name2.setText("C#");
		lan.addContent(name2);
		
		Element IDE2 = new Element("IDE");
		IDE2.setText("Visual Studio");
		lan2.addContent(IDE2);
		rss.addContent(lan2);

		
		//格式   换行、编码
		Format format = Format.getCompactFormat();
		format.setIndent("");  
		format.setEncoding("GBK");
		
		//4.创建XMLOutputter的对象
		XMLOutputter outputer = new XMLOutputter(format);
		try {
			
			//5.利用outputer将document对象转换成xml文档
			outputer.output(document, new FileOutputStream(new File("Booknews.xml")));
				
							
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
}






第四种:SAX的全称是SimpleAPIsforXML,也即XML简单应用程序接口。与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口。


由于本人能力有限、还有SAX有点麻烦、所以不再这里给你们显示了;




激光甲烷传感器DIY指南:从DFB激光器选型到Herriott池光路搭建 本文详细介绍了如何DIY激光甲烷传感器,从DFB激光器选型到Herriott池光路搭建的全过程。通过TDLAS技术实现ppm级甲烷检测,适用于家用燃气泄漏监测和农业沼气监测等场景。文章包含核心器件选型、光路搭建技巧、信号调理方案及系统集成优化,为创客提供实用指南。 阅读详情

相关推荐

WSL2+Docker+Ollama:解锁Windows本地GPU加速运行DeepSeek-R1模型

本文详细介绍了在Windows系统上,通过WSL2、Docker和Ollama的组合方案,实现本地GPU加速运行DeepSeek-R1模型的全过程。该方案解决了Windows环境下Ollama默认无法调用NVIDIA显卡的痛点,通过配置Docker的GPU支持,强制将计算任务分配给GPU,从而显著提升文本生成速度与效率,为开发者提供了一个便捷的本地AI测试环境。

weixin_28452161的博客 357

dom4j

创建xml文档的两种方法 1、DocumentHelper类的createDocument()方法 DocumentHelper document=DocumentHelper.createDocument(); 2、DoucumentFactory也可以创建xml文档 DocumentFactory documentfactory=DocumentFactory.getInstence(

1135

手把手教你用Multisim 14.2仿真一个4.4V的LDO电路(附完整仿真文件)

本文详细介绍了如何使用Multisim 14.2仿真一个4.4V的LDO电路,从环境配置、核心参数解析到电路搭建和仿真调试。通过分压电阻精确计算和瞬态响应测试,帮助读者掌握LDO电路的设计与验证技巧,并附有完整仿真文件供参考。

weixin_28738397的博客 275

dom4j的Element

1,Element其中的一个Element为dom4j,创建Element,通过DocumentHelper.createElement(name) 如:Element result=DocumentHelper.createElement("result"); 2,设置Element的text内容,通过result.setText(value); 如:a.setText("这里"); 3

xclsky的博客 6079

示波器面板上的隐藏功能:如何利用BW Limit和EXT TRIG提升测量精度

本文深入探讨示波器面板上的隐藏功能BW Limit和EXT TRIG,揭示它们如何提升测量精度。通过带宽限制(BW Limit)有效滤除高频噪声,结合外部触发(EXT TRIG)确保稳定信号捕获,为电子测量提供专业解决方案。特别适用于开关电源、传感器信号等复杂场景的高精度测量需求。

weixin_30300225的博客 518

Amos实战:如何用Bootstrap法检验中介效应?附完整操作步骤

本文详细介绍了如何使用Amos软件通过Bootstrap法检验中介效应,包括模型设定、参数配置和结果解读。Bootstrap方法因其不依赖正态分布假设、统计功效高等优势,成为中介效应分析的首选方法。文章提供了完整的操作步骤和实用建议,帮助研究者准确评估变量间的中介作用机制。

zz67890的博客 1440

java xml技术_Java处理XML的三种主流技术及介绍(2)

SAX解析XML与 DOM 建立树形结构的方式不同,SAX 采用事件模型来解析 XML 文档,是解析 XML 文档的一种更快速、更轻量的方法。 利用 SAX 可以对 XML 文档进行有选择的解析和访问,而不必像 DOM 那样加载整个文档,因此它对内存的要求较低。 但 SAX 对 XML 文档的解析为一次性读取,不创建任何文档对象,很难同时访问文档中的多处数据。下面是一个 SAX 解析 XML 的例...

weixin_34247523的博客 151

配置VS Code使用Linux服务器上的Matlab

0、需求 Linux服务器上安装有Matlab 无图形界面,只能使用命令行工具,编辑文件不方便 1、VS Code插件安装 在扩展商店中搜索matlab,会出现Matlab Extension Pack,里面有整理好的matlab扩展 这里只安装了第一排的三个扩展 2、设置(Windows、Mac的设置类似,只是不同系统的文件路径不同) 安装好扩展,重启VS Code后,进行设置 打开:文件→首选项→设置(或快捷键ctrl+,),搜索matlab,结果如下图所示;直接打开完整json配置文件(图

赵彬的博客 5009

Java创建Document对象有哪些方法呢?

Java创建Document对象的方法分享

qq_25073223的博客 1759

UNet改进(24):注意力机制-从基础原理到高级融合策略

本文系统探讨了如何通过引入各类注意力机制增强UNet在医学图像分割中的性能。文章分为基础篇、进阶篇和高级篇三个层级:基础篇介绍了时序注意力、可变形注意力、分层注意力等8种基础机制;进阶篇提出了5种混合注意力设计;高级篇则探讨了全局+局部+多尺度等复杂组合机制。实验表明,这些注意力模块在心脏MRI、肺部感染等任务中能提升2-15%的分割精度。文章还提供了硬件适配建议和完整实现代码,为研究者提供了全面的技术参考。未来方向包括NAS优化、量子注意力等前沿探索,为UNet在医疗影像等领域的应用革新提供了理论指导。

2501_91516851的博客 764

Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)

CloudScraper是一个专门用于绕过Cloudflare反机器人保护的Python库,它基于requests库构建,能够处理Cloudflare的5秒盾、WAF和人机验证等防护机制。

数据知道的博客 1万+

dom4j学习总结

一、Dom4j介绍 dom4j是由JDOM开发团队分裂后开发出来的包;在hibernate、JAXM中都使用了dom4j; 性能来说:Dom4j&gt;JDom&gt;JAXP; 二、dom4j API DocumentHelper类中有: (1)Document document = DocumentHelper.createDocument();//创建一个d...

mmdev 248

从数据到行动:客服运营必分析的8大核心维度

服务运营正从被动响应升级为数据驱动型战略体系。客服中心的海量交互数据能精准反映服务效能、客户体验及运营短板,关键在于实现数据的可视化与可操作化。本文系统剖析了八类核心数据指标:1)客户行为数据(CSAT/NPS/投诉内容);2)通话效率指标(AHT/接通率);3)服务质量(质检体系/情绪识别);4)坐席绩效(FCR/客户评价);5)流程与知识库(转接率/工单时效);6)渠道流量分析;7)异常预警机制;8)成本收益模型。通过构建多维数据分析体系,企业可在客户全生命周期管理中实现服务升级、风险防控与资源

2202_75469062的博客 1400

XML的四种解析方式

XML的解析方式有四种: DOM解析 SAX解析 DOM4J解析 JDOM解析 一、DOM解析: 与 js 中的类似,使用 JAXP(Java API for XML Parsing),即:用于 XML 解析的 Java API.DOM(Document Object Model, 文档对象模型),在应用程序中,基于 DOM 的 XML 分析器将一个 XML 文档转...

cui__shen的博客 4万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java操作XML文档(创建、查询、新增、修改、删除)

1、XML简介 XML是 eXtensible Markup Language(可扩展标记语言)的缩写,是 SGML(标准通用化标记语言)的一个子集,用于提供数据描述格式,适用于不同应用程序间的数据交换,而且这种交换不以预先定义的一组数据结构为前提,增强了可扩展性。 1.2 XML文档结构 XML是一套定义语义标记的规则,同时也是用来定义其他标识语言的元标识语言。下面是一个简单的XML文档的...

pan_junbiao的博客 5378

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java 读取xml_java读取XML文件的四种方法总结(必看篇)

JAVA操作XML文档主要有四种方式,分别是DOM、SAX、JDOM和DOM4J,DOM和SAX是官方提供的,而JDOM和DOM4J则是引用第三方库的,其中用的最多的是DOM4J方式。运行效率和内存使用方面最优的是SAX,但是由于SAX是基于事件的方式,所以SAX无法在编写XML的过程中对已编写内容进行修改,但对于不用进行频繁修改的需求,还是应该选择使用SAX。下面基于这四种方式来读取XML文件。...

weixin_36339470的博客 5827

java dom创建xml文件_Java 如何使用dom方式读取和创建xml文件

Java 如何使用dom方式读取和创建xml文件发布时间:2020-11-11 17:08:31来源:亿速云阅读:101作者:Leah本篇文章给大家分享的是有关Java 如何使用dom方式读取和创建xml文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java 利用dom方式读取、创建xml详解1.创建一个接口XmlInterfac...

weixin_34805308的博客 206

Java生成xml文件的四种方式

上一篇文章写了xml文件4种读取方式,本篇文章将简介使用四种方式对xml进行写入。

3y先生的博客 8万+

Java读取excel文件生成xml文档和JSON文档

Java读取excel文件生成xml文档和JSON文档 目录(?)[+] 1.读取Excel文档中的内容 注意:刚开始在网上下了jlx.rar文件,没注意直接把jlx.rar当成jar包导进去了,在写代码时候纠结了,死活找不到相关jxl.jar包下面的类!各位看客注意了导包的时候一定要导入.jar包   rar与jar  真的好

u014558889的专栏 2687

读取xml java,Java读取xml数据

xml中的代码书名1100书名2300java中的代码import java.io.File;import java.io.IOException;import javax.lang.model.element.Element;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFacto...

weixin_28865923的博客 1168

四种生成和解析XML文档的方法

四种生成和解析XML文档的方法众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J下面首先给出这四种方法的jar包下载地址DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里SAX:http://sourceforge.net/projects/sax/JDOM:http://jdom.org/downloads/index.h

github_39295111的博客 5877

XML文档的四种生成和解析方法详解

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SAX:http://sourceforge.net/projects/sax/ JDOM:http://jdom.org/downloads/index.html D

sms0101的专栏 5288

Java四种读取和创建XML文档的例子

四种方法解析XML文档:Dom、SAX、JDOM、dom4j 1、了解XML: XML,即可扩展标记语言(ExtensibleMarkupLanguage),标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言...

chihuo2428的博客 115

java读取xml文件的四种方法

1)DOM(JAXP Crimson解析器)     DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找 特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下 导

rj042的专栏 1234

四种方法解析XML文档:Dom、SAX、JDOM、dom4j

四种方法解析XML文档:Dom、SAX、JDOM、dom4j                1、了解XML:         XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言

流年~~ 656
上一篇: JSON 和 List、Map集合结合使用
下一篇: Java四种读取和创建XML文档的例子教程
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值