XML基础知识学习
- CDATA区:不被解析
<![CDATA[内容]]>或者转义字符:< script >子元素< /script >
- 处理指令
简称PI (processing instruction)。处理指令用来指挥解析引擎怎样解析XML文档内容。比如,在XML文档中能够使用xml-stylesheet指令。通知XML解析引擎,应用css文件显示xml文档内容。 <?xml-stylesheet type="text/css" href="1.css"?>
处理指令必须以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。
通过 DTD,您的每个 XML 文件均可携带一个有关其自身格式的描写叙述。通过 DTD。独立的团体可一致地使用某个标准的 DTD 来交换数据。而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。您还能够使用 DTD 来验证您自身的数据。
- XML DTD :文档类型定义,不严格,简单
l 使用外部DTD SYSTEM
l 使用公共DTD PUBLIC
]>
DTD元素
<!ATTLIST 元素名称 属性名 属性类型 属性约束>
属性类型 CDATA (字符串)
属性约束 #REQUIRED 这个代表属性必须有。
#FIXED 属性值的绑定
- XML Schema:语法难,约束性强
- 支持回写
- 会将整个XML加载内存,以树形结构方式存储,大文件的时候执行较慢
- XML比較复杂的时候。或者当你须要随机处理文档中数据的时候不建议使用
- 全部的东西都映射成node
- 相比DOM是一种更为轻量级的方案。 速度快
- 採用串行方法读取 --- 逐行读取
- 编程较为复杂
- 无法改动XML数据,仅仅能读。
<? xml version="1.0" encoding="UTF-8" standalone="no"? ><!-- 使用内容的dtd --><books>
<bookkuan="">
<bookname>红楼梦</bookname>
<author>小张</author>
<value>15.6</value></book>
<bookkuan="">
<bookname>爱我是</bookname>
<author>撒地方</author>
</book>
</books>
publicclass test1 {
/**
* @param args
* @throws ParserConfigurationException
* @throws IOException
* @throws SAXException
* @throws TransformerException
*/
publicstaticvoid main(String[] args)throwsParserConfigurationException,
SAXException,IOException,TransformerException{
// addElement();
// updateText();
deleteElement();
}
/**删除元素
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException
* @throws TransformerException
* @throws TransformerFactoryConfigurationError
* @throws TransformerConfigurationException
*/
privatestaticvoid deleteElement()throwsParserConfigurationException,SAXException,IOException,TransformerConfigurationException,TransformerFactoryConfigurationError,TransformerException{
Document document = getDocument("dtd/books.xml");
NodeList nodeList=document.getElementsByTagName("author");
Element element=(Element) nodeList.item(0);
//通过父亲来删除子节点
element.getParentNode().removeChild(element);
domToFile(document);
}
/**加入元素
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException
* @throws TransformerFactoryConfigurationError
* @throws TransformerConfigurationException
* @throws TransformerException
*/
privatestaticvoid addElement()throwsParserConfigurationException,
SAXException,IOException,TransformerFactoryConfigurationError,
TransformerConfigurationException,TransformerException{
Document document = getDocument("dtd/books.xml");
Element element= document.createElement("value");
element.setTextContent("15.6");
document.getElementsByTagName("book").item(0).appendChild(element);
domToFile(document);
}
//改动
publicstaticvoid updateText()throwsParserConfigurationException,SAXException,IOException,TransformerConfigurationException,TransformerFactoryConfigurationError,TransformerException{
Document document = getDocument("dtd/books.xml");
NodeList nodeList=document.getElementsByTagName("author");
Element element=(Element) nodeList.item(1);
element.setTextContent("小红");
domToFile(document);
}
/**由于是载入到内存,所以须要回写到xml文件里
* @param document
* @throws TransformerFactoryConfigurationError
* @throws TransformerConfigurationException
* @throws TransformerException
*/
privatestaticvoid domToFile(Document document)
throwsTransformerFactoryConfigurationError,
TransformerConfigurationException,TransformerException{
TransformerFactory factory=TransformerFactory.newInstance();
Transformer tf=factory.newTransformer();
tf.transform(newDOMSource(document),newStreamResult("dtd/books.xml"));
}
/**得到document
* @param file
* @return
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException
*/
publicstaticDocument getDocument(String file)
throwsParserConfigurationException,SAXException,IOException{
// TODO Auto-generated method stub
// 解析器工厂
DocumentBuilderFactory builderFactory =DocumentBuilderFactory
.newInstance();
// 解析器
DocumentBuilder db = builderFactory.newDocumentBuilder();
Document document =(Document) db.parse(file);
return document;
}
}
// 1.得到sax解析器工厂
SAXParserFactory factory =SAXParserFactory.newInstance();
// 2.得到sax解析器
SAXParser parse = factory.newSAXParser();
// parse.parse("xml/books.xml", new MyHandle()); //这句话能够替换以下的三句
// 3.得到读取器
XMLReader reader = parse.getXMLReader();
// 4设置读取器的事件处理器
reader.setContentHandler(newMyHandle());
// 5.真正读取文件
reader.parse("xml/books.xml");
classMyHandleextendsDefaultHandler{
@Override
publicvoid startDocument()throwsSAXException{
System.out.println("start document");
}
@Override
publicvoid startElement(String uri,String localName,String qName,
Attributes attributes)throwsSAXException{
// qName能够得到元素名称
// 能够通过 attributes得到当前元素的全部属性
System.out.println("<"+ qName +">");
}
@Overrid
publicvoid characters(char[] ch,int start,int length)
throwsSAXException{
// 能够得到元素中的文本信息
System.out.println(newString(ch, start, length));
}
@Override
publicvoid endElement(String uri,String localName,String qName)
throwsSAXException{
System.out.println("<"+ qName +">");
}
@Override
publicvoid endDocument()throwsSAXException{
System.out.println("endDocument");
}
与JDOM不同的是,dom4j使用接口和抽象基类,尽管Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性
Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。如今非常多软件採用的Dom4j,比如Hibernate。包含sun公司自己的JAXM也用了Dom4j
使用Dom4j开发。需下载dom4j对应的jar文件
XML基础知识学习的更多相关文章
- AXAJ基础知识学习
AXAJ基础知识学习 博客首页 Ajax简介 ajxa全称是Asynchronous Javascript And XML ,就是异步的JS 和XML 通过Ajax可以再浏览器中向服务器发送异步请求, ...
- JavaEE XML 基础知识
JavaEE XML 基础知识 @author ixenos 1. XML开头都需要一个声明 <?和?>表明这是一个处理指令 <?xml version=”1.0” encod ...
- GCC基础知识学习
GCC基础知识学习 一.GCC编译选项解析 常用编译选项 命令格式:gcc [选项] [文件名] -E:仅执行编译预处理: -S:将C代码转换为汇编代码: -c:仅执行编译操作,不进行连接操作: -o ...
- (转)Linux基础知识学习
Linux基础知识学习 原文:http://blog.csdn.net/ye_wei_yang/article/details/52777499 一.Linux的磁盘分区及目录 Linux的配置是通过 ...
- Objective-c基础知识学习笔记
Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...
- Vue2基础知识学习
Vue2基础知识学习 01.初识 new Vue({ el: '#root', //用于指定当前Vue实例为哪个容器服务,值通常为css选择器符 data () { return { } } }); ...
- .net学习笔记---xml基础知识
一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基 ...
- Linq的简介和基础知识学习
学习LINQ之前,我们要知道LINQ是干什么,解决什么问题的,怎样学习? 一.LINQ简介 1.什么是LINQ? 什么是LINQ?LINQ中文翻译为语言集成查询(Language Integrated ...
- Elasticsearch基础知识学习
概要 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Ap ...
随机推荐
- jquery 获取被点击元素的id属性值
有时候可能需要获取被点击元素的一些信息,此处就以id属性为例子,进行演示一下. $(document).click(function (e){ var v_id=e.target.id; consol ...
- 关于微信小程序post请求数据的坑
在post请求数据的时候,发现数据没有发送给后台,需要在请求头里加"Content-Type": "application/x-www-form-urlencoded&q ...
- python大数据挖掘系列之基础知识入门
preface Python在大数据行业非常火爆近两年,as a pythonic,所以也得涉足下大数据分析,下面就聊聊它们. Python数据分析与挖掘技术概述 所谓数据分析,即对已知的数据进行分析 ...
- linux之参数实用讲解
<1>linux文件参数 在Windows下是使用 %1 %2 %3 而在Linux下是使用 $1 $2 $3 ------------------- 如: 1.某bat文件 cd ...
- 【BZOJ4476&JSOI2015】送礼物(二分,RMQ)
ANS明显是有二分性的 二分答案,设二分值为b M(i,j)−m(i,j)j−i+k>b 显然当l<长度<r时,一端是最小值,一端是最大值. 等于l或r的时候因为可能不满足以上性质, ...
- set基本用法---1
#include<cstdio> #include<iostream> #include<cstdlib> #include<cmath> #inclu ...
- .net web api返回结果为json
web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面为大家介绍几种不错的方法 web api写api接口时默认返回的是把你的对象序列化后以 ...
- usb 2.0 支援的速度
from http://www.usb.org/developers/docs/usb20_docs/ high speed : 480 Mb/s full speed : 12 Mb/s low s ...
- LeetCode OJ-- Count and Say
https://oj.leetcode.com/problems/count-and-say/ 求经过n次变换后,变成了什么. 1 11 21 1211 111221 ps. 3 变成 ‘3 ...
- json.net(Json.NET - Newtonsoft)利用动态类解析json字符串
将对象转换为字符串很简单,唯一要注意的点就是为了避免循环要在需要的字段上添加jsonignore属性.可以参照这篇博文:http://www.mamicode.com/info-detail-1456 ...