【javaweb学习】解析XML
1. 解析XML的方式有两种
dom:Document Object Model文档对象模型,是w3c组织推荐的解析方式
sax:Simple Api XML不是官方标准,但它是XML社区实际上的标准,几乎所有的XML解析器都支持它
区别:
dom需要读取整个XML文档,在内存中构建代表这个DOM树的Document对象,然后再对XML文档进行操作;
SAX解析允许在读取文档的时候,即对文档进行处理,而不必等到整个XML文档装载完才会对文档进行操作。
2. XML解析开发包
2.1 JAXP开发包
JAXP开发包是JavaSE的一部分,由 javax.xml org.w3c.dom org.xml.sax 及其子包组成。
(1)DOM方式
- 遍历所有节点
- 查找某一个节点
- 删除结点
- 更新结点
- 添加节点
//1.创建工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//2.得到dom解析器
DocumentBuilder builder = factory.newDocumentBuilder();//Add Exception
//3.解析xml文档,得到代表文档的document
Document document = builder.parse("src/book.xml"); //4.对xml文档进行操作
NodeList list = document.getElementsByTagName("书名");
Node bookNameNode = list.item(0);
String content = bookNameNode.getTextContent();
System.out.println(content);
(2)SAX方式
sax解析例子
public class Demo1 {
/**
* @throws SAXException
* @throws ParserConfigurationException
* @throws IOException
*/
public static void main(String[] args) throws ParserConfigurationException,
SAXException, IOException {
// 1.创建解析工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
// 2.得到解析器
SAXParser sp = factory.newSAXParser();
// 3.得到读取器
XMLReader xmlReader = sp.getXMLReader();
// 4.设置内容处理器
xmlReader.setContentHandler(new ListHandler());
// 5.读取xml文档内容
xmlReader.parse("src/book.xml");
}
}
// 得到文档的所有内容
class ListHandler implements ContentHandler {
@Override
public void setDocumentLocator(Locator locator) {
// TODO Auto-generated method stub
}
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void endPrefixMapping(String prefix) throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
System.out.println("<" + qName + ">");
for(int i=0; atts!=null && i<atts.getLength(); i++){
String name = atts.getQName(i);
String value = atts.getValue(i);
System.out.println("(" +name+ "=" +value+ ")");
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("</" + qName + ">");
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.println(new String(ch, start, length));
}
@Override
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void processingInstruction(String target, String data)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void skippedEntity(String name) throws SAXException {
// TODO Auto-generated method stub
}
}
更新XML文档例子
//将更改后的内存document写入xml文档
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/book2.xml")));
2.2 Dom4j开发包
dom4j是简单灵活的开源库,性能优异、功能强大、容易使用,不仅hibernate在用,连sun公司自己都在用。
//DOM4j中,获得Document对象的方式有三种:
//1.读取XML文件,获得document对象
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml")); //2.解析XML形式的文本,得到document对象.
String text = "<members></members>";
Document document = DocumentHelper.parseText(text); //3.主动创建document对象.
Document document = DocumentHelper.createDocument();
//创建根节点
Element root = document.addElement("members");
//Document对象写入xml文件中
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312"); XMLWriter xw = new XMLWriter(new FileOutputStream("src/book.xml"),format);
xw.write(document);
xw.close();
【javaweb学习】解析XML的更多相关文章
- JavaWeb学习——web.xml文件说明
JavaWeb学习——web.xml文件说明 摘要:本文主要学习了web.xml文件的作用以及如果配置. 是什么 web.xml文件是用来在JavaWeb项目里面初始化配置信息的,比如:访问的首页.S ...
- JavaWeb学习笔记——XML解析
DOM解析操作 只在跟节点<addresslist>下面建立一个子节点<name> <?xml version="1.0" encoding=&quo ...
- JavaWeb学习日记----XML的解析
XML的解析简介: 在学习JavaScript时,我们用的DOM来解析HEML文档,根据HTML的层级结构在内存中分配一个树形结构,把HTML的标签啊,属性啊和文本之类的都封装成对象. 比如:docu ...
- JavaWeb学习日记----XML基础
1.XML基础: XML全称为eXtensible Markup Language;即可扩展标记型语言,同HTML一样使用标签来操作.它的可扩展性体现在标签可以由自己定义,可以是中文标签. XML用途 ...
- 【javaweb学习】XML和约束模式
xml:可扩展标记语言,w3c组织发布的,用于保存有关系的数据,作为配置文件,描述程序模块之间的关系 <?xml version="1.0" encoding="g ...
- javaweb dom4j解析xml文档
1.什么是dom4j dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它 ...
- JavaWeb学习笔记——XML和SAX解析区别
- go 语言学习 ---解析xml
实例1 //main package main import ( "bytes" "encoding/xml" "fmt" "io ...
- JavaWeb学习笔记——XML简介
- [android] 采用pull解析xml文件
/***********2016年5月6日 更新**********************/ 知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...
随机推荐
- JavaScript方法
1.hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员.isPrototype ...
- Servlet 之 HttpServlet
package cn.jiemoxiaodi.http; import java.io.IOException; import javax.servlet.GenericServlet; import ...
- JVM内存管理------垃圾搜集器参数精解
本文是GC相关的最后一篇,这次LZ只是罗列一下hotspot JVM中垃圾搜集器相关的重点参数,以及各个参数的解释.废话不多说,这就开始. 垃圾搜集器文章传送门 JVM内存管理------JAVA语言 ...
- Webdriver配合Tesseract-OCR 自动识别简单的验证码
验证码: 如下,在进行自动化测试,遇到验证码的问题,一般有两种方式 1.找开发去掉验证码或者使用万能验证码 2.使用OCR自动识别 使用OCR自动化识别,一般识别率不是太高,处理一般简单验证码还是没问 ...
- hive创建索引
索引是hive0.7之后才有的功能,创建索引需要评估其合理性,因为创建索引也是要磁盘空间,维护起来也是需要代价的 创建索引 hive> create index [index_studentid ...
- 【Python】 属性的 get 与 set 方法
在C#里面,属性的get 与 set 非常简单方便. public class bird { public int age { get;set; } public bool isadult { get ...
- [perl]字符串转拼音首字母(支持多音字)
实现的思路是,查表找到该字的所有读音,然后取首字母. 代码: while (<DATA>) { chomp; })(.*)$/; $all =~ s/^\s+//; ### 只保留无音标号 ...
- ubuntu下安装myeclipse 并设置快捷键
官网下载:http://www.myeclipseide.com/ 安装myeclipse ctrl+alt+t打开终端,切换到myeclipse所在路径: -$ cd 下载/ 设置myeclipse ...
- jQuery插件(多级菜单)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- markdown 常用语法 (在macdown内使用正常)
顺便附上 MacDown的官网,我觉得MacDown挺好用的,推荐给大家! #一级标题 ##二级标题 ###三级标题 ####四级标题 #####五级标题 ######六级标题 *** ###使用分割 ...