【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 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...
随机推荐
- IDA插件栈字符串识别插件
该插件是一款可以自动识别栈上局部变量为字符串的插件,字符串形式如下,并自动的加上注释 如图:可以自动识别栈上的字符串 项目主 ...
- 进度条ProgressDialog
1.效果图 public void click(View view) { final ProgressDialog pdDialog = new ProgressDialog(this); //设置标 ...
- epoll示例
书到用时方恨少,一切尽在不言中 #include <iostream> #include <sys/socket.h> #include <sys/epoll.h> ...
- Spring的测试
spring测试要引用junit及spring-test <dependency> <groupId>junit</groupId> <artifactId& ...
- sha256 C语言
/** * \file sha2.h * * \brief SHA-224 and SHA-256 cryptographic hash function * * Copyright (C) 2006 ...
- myeclipse如何设置字体?
1.首先,将你的Myeclipse打开. 找到上面的菜单“windows”打开“Preferences” 2.然后,在弹出的设置窗口中找到“colors and fonts” 3.将右边的basic打 ...
- JS中多种方式创建对象
1.内置对象创建 var girl=new Object(); girl.name='hxl'; console.log(typeof girl); 2.工厂模式,寄生构造函数模式 function ...
- execl表格VLOOKUP函数的使用
使用场景:最近在处理一个表格数据的时候出现了一点麻烦.想把另外表2里面对应的的数据放到表1里面,本来表2的ID是乱序的(这里为好看,就顺序排了.),一个个查找复制粘贴比较麻烦,后经大师指点VLOOKU ...
- Nginx 反代理其他搜索引擎
反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- 3.OGG函数
1.COMPUTE 一般用来计算目标端和源段的字段值,使用这个函数计算出目标端对应列想要的值 Use the @COMPUTE function to return the value of ...