java基础笔记(6)
xml文件的写入
通过dom生成xml文件:
package com.writexml; import java.io.File; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.*; import org.w3c.dom.Document;
import org.w3c.dom.Element; public class domWrite {
public DocumentBuilder getDocumentBuilder() throws ParserConfigurationException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
return db;
}
public void creatXML() throws ParserConfigurationException, TransformerException {
DocumentBuilder db = getDocumentBuilder();
Document document = db.newDocument();
document.setXmlStandalone(true);//默认的话会在生成的xml文件声明中将Standalone=“no”,这样会生成说明格式的文档,若要将其不生成,这通过这个语句设置成yes,即true
Element bookstore = document.createElement("bookstore");//创建节点
Element book = document.createElement("book");
Element name = document.createElement("name");
name.setTextContent("童话故事");
book.setAttribute("id", "1");
document.appendChild(bookstore);//将bookstore根节点增加到dom树中
bookstore.appendChild(book);//将book节点增加到bookstore根节点中
book.appendChild(name);
TransformerFactory tff = TransformerFactory.newInstance();//创建TransformerFactory对象
Transformer tf = tff.newTransformer();//创建Transformer对象
tf.setOutputProperty(OutputKeys.INDENT, "yes");//是否换行
tf.transform(new DOMSource(document), new StreamResult(new File("books01.xml")));//将document输入到文件中 }
public static void main(String[] args) throws ParserConfigurationException, TransformerException {
// TODO Auto-generated method stub
domWrite test = new domWrite();
test.creatXML();
} }
通过SAX生成xml文件:
package com.writexml; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult; import org.jdom2.Attribute;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl; import com.entry.Book;
import com.hd.SAXHd; public class saxWrite {
public ArrayList<Book> parseXml() throws ParserConfigurationException, SAXException, IOException{
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
SAXHd hd = new SAXHd();
parser.parse("books.xml", hd);
return hd.getBookList();
}
public void creatXML() throws ParserConfigurationException, SAXException, IOException, TransformerConfigurationException {
ArrayList<Book> book = parseXml();//运行parseXml,将一个包含两本书对象的集合传给变量book;
SAXTransformerFactory tff = (SAXTransformerFactory)SAXTransformerFactory.newInstance();//创建SAXTransformerFactory对象
TransformerHandler tfh = tff.newTransformerHandler();//创建TransformerHandler对象;
Transformer tf = tfh.getTransformer();//通过TransformerHandler创建Transformer对象;
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");//通过Transformer对象设置编码;
tf.setOutputProperty(OutputKeys.INDENT, "YES");//通过Transformer对象设置是否换行;
File f = new File("books02.xml");
if(!f.exists()) {
f.createNewFile();
}
Result result = new StreamResult(new FileOutputStream(f));//将文件加载到result中
tfh.setResult(result);//将创建好的result对象和TransformerHandler对象关联
tfh.startDocument();//打开文档
AttributesImpl attr = new AttributesImpl();
tfh.startElement("", "", "bookstore", attr);
for (Book i :book) {
attr.clear();
attr.addAttribute("", "", "id", "", i.getId());
tfh.startElement("","","book",attr);
if(i.getName()!=null && !i.getName().trim().equals("")) {
attr.clear();
tfh.startElement("","","name",attr);
tfh.characters(i.getName().toCharArray(), 0, i.getName().length());
tfh.endElement("","","name");}
if(i.getAuthor()!=null && !i.getAuthor().trim().equals("")) {
attr.clear();
tfh.startElement("","","author",attr);
tfh.characters(i.getAuthor().toCharArray(), 0, i.getAuthor().length());
tfh.endElement("","","author");}
if(i.getYear()!=null && !i.getYear().trim().equals("")) {
attr.clear();
tfh.startElement("","","year",attr);
tfh.characters(i.getYear().toCharArray(), 0, i.getYear().length());
tfh.endElement("","","year");}
tfh.endElement("","","book");
}
tfh.endElement("", "", "bookstore"); tfh.endDocument();//关闭文档 }
public static void main(String[] args) throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException {
// TODO Auto-generated method stub
saxWrite test = new saxWrite();
test.creatXML();
} }
dom4j创建rss类的xml文件:
package com.writexml; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter; public class dom4j {
public void creatMXL() throws IOException {
Document document = DocumentHelper.createDocument();//创建document对象,代表整个xml文档
Element rss = document.addElement("rss");//创建根节点rss;
rss.addAttribute("version", "2.0");//向根节点添加属性
Element channel = rss.addElement("channel");//生成rss的子节点channel
Element title = channel.addElement("title");//生成channel的子节点title
title.setText("国内最新新闻");//设置子节点title的节点值
OutputFormat format = OutputFormat.createPrettyPrint();//设置格式
format.setEncoding("GBK");//设置字符编码
File file = new File("books03.xml");
XMLWriter writer = new XMLWriter(new FileOutputStream(file),format);
writer.setEscapeText(false);//设置是否转义,默认是会转义
writer.write(document);//生成xml文件并传进格式
writer.close();
} public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
dom4j test = new dom4j();
test.creatMXL();
} }
JDOM生成xml文件
package com.writexml; 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.EscapeStrategy;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter; public class jdomWriter {
EscapeStrategy es = new EscapeStrategy() { @Override
public boolean shouldEscape(char arg0) {
// TODO Auto-generated method stub
return false;
}
};
public void creatXML() throws FileNotFoundException, IOException {
Element rss = new Element("rss");//创建rss根节点
rss.setAttribute("servion", "2.0");//创建节点的属性
Document document = new Document(rss);//生成document对象,并将根节点传入
Element channel = new Element("channel");
rss.addContent(channel);
Element title = new Element("title");
title.setText("国内最新新闻");
channel.addContent(title);
Format format = Format.getPrettyFormat();
format.setEscapeStrategy(es );
XMLOutputter outputer = new XMLOutputter(format);//创建outputer对象
File file = new File("books04.xml");
outputer.output(document, new FileOutputStream(file));//通过outputer对象中的output方法将document对象传入xml文件中 }
public static void main(String[] args) throws FileNotFoundException, IOException {
// TODO Auto-generated method stub
jdomWriter test = new jdomWriter();
test.creatXML();
} }

java基础笔记(6)的更多相关文章
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- Java基础笔记1
java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...
- Java基础笔记(一)——JDK、JRE、JVM
JDK.JRE和JVM三者的关系 Java程序执行过程 JVM(java virtual machine) 注:由于各种操作系统(windows.linux等)支持的指令集(二进制可执行代码)不同,程 ...
- Java基础笔记05-06-07-08
五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...
- Java基础笔记-抽象,继承,多态
抽象类: abstract修饰 抽象方法必须定义在抽象类中,抽象类不能创建对象. 在抽象方法中可以不定义抽象方法,作用是:让该类不能建立对象. 特点是: 1.定义在抽象类中 2.方法和类都用abstr ...
- Java基础笔记(一)
本文主要是我在看<疯狂Java讲义>时的读书笔记,阅读的比较仓促,就用 markdown 写了个概要. 第一章 Java概述 Java SE:(Java Platform, Standar ...
- JAVA基础笔记10-11-12-13-14
十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...
随机推荐
- python接口自动化七(重定向-禁止重定向Location)
前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...
- 【NOIP2016提高A组集训第3场10.31】高维宇宙
题解 分析 因为只有奇数和偶数配对才有可能得出质数, 暴力求出每一对\(a_i+a_j\)为质数,将其中的奇数想偶数连一条边. 二分图匹配,匈牙利算法. #include <cmath> ...
- Vue CLI4.0版本正式发布了!一起来看看有哪些新的变化吧
Vue CLI4.0版本正式发布 这个主要的版本更新主要关注底层工具的必要版本更新.更好的默认设置和其他长期维护所需的微调. 我们希望为大多数用户提供平稳的迁移体验. Vue CLI v4提供了对Ni ...
- Jmeter性能测试一
用jmeter进行压力测试,在网上看到一个简单的例子.按步骤做,在jmeter中执行时,结果中error一直为100%.通过在代码中加入打印语句,才找出代码中的一处错误.下面po上的代码中已将错误修改 ...
- IView入门练习~CDN模式全局加载JS
关于 iView iView 是一套基于 Vue.js 的开源 UI 组件库,主要服务于 PC 界面的中后台产品. 特性 高质量.功能丰富 友好的 API ,自由灵活地使用空间 细致.漂亮的 UI 事 ...
- LeetCode_1114.按顺序打印(多线程)
LeetCode_1114 LeetCode-1114.按顺序打印 我们提供了一个类: public class Foo { public void one() { print("one&q ...
- learning webrtc 使用node.js
第二章 有使用node.js创建静态服务器的步骤 不过不够详细 下面以Windows为例 1.到官方网站下载安装包 然后安装 2.用管理员权限启动命令行 3.命令行窗口执行npm config set ...
- Java synchronized到底锁住的是什么?
使用环境:多线程java程序中. 作用:在多线程的环境下,控制synchronized代码段不被多个线程同时执行.synchronized既可以加在一段代码上,也可以加在方法上. 使用:synchro ...
- EMQ插件通过HTTP连接认证服务器实现认证
需求 在EMQ中添加认证插件,将到来的MQTT连接的ClientID.UserName.Password通过HTTP协议发送到认证服务器,用返回的数据决定是否允许该连接: 在连接时和断开时向服务器发送 ...
- 【Python】—— 获取函数内部变量名称
原文出处: https://blog.csdn.net/maixiaochai/article/details/88693507 关键语句: func_vars = func.__code__.co_ ...