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{
@Overridepublicvoid startDocument()throwsSAXException{System.out.println("start document");}@Overridepublicvoid startElement(String uri,String localName,String qName,Attributes attributes)throwsSAXException{// qName能够得到元素名称// 能够通过 attributes得到当前元素的全部属性System.out.println("<"+ qName +">");}@Overridpublicvoid characters(char[] ch,int start,int length)throwsSAXException{// 能够得到元素中的文本信息System.out.println(newString(ch, start, length));}@Overridepublicvoid endElement(String uri,String localName,String qName)throwsSAXException{System.out.println("<"+ qName +">");}@Overridepublicvoid 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 ...
随机推荐
- 抄书 Richard P. Stanley Enumerative Combinatorics Chapter 2 Sieve Methods
2.1 Inclusion-Exclusion Roughly speaking, a "sieve method" in enumerative combinatorics is ...
- [NOI2014][bzoj3670] 动物园 [kmp+next数组应用]
题面 传送门 思路 首先,这题最好的一个地方,在于它给出的关于$next$的讲解实在是妙极......甚至可以说我的kmp是过了这道题以后才脱胎换骨的 然后是正文: 如何求$num$数组? 这道题的输 ...
- BZOJ 4569 [Scoi2016]萌萌哒 ——ST表 并查集
好题. ST表又叫做稀疏表,这里利用了他的性质. 显然每一个条件可以分成n个条件,显然过不了. 然后发现有许多状态是重复的,首先考虑线段树,没什么卵用. 然后ST表,可以每一层表示对应的区间大小的两个 ...
- session失效时间
1.web容器中设置(此处以tomcat为例) <session-config> <session-timeout>30</session-timeout> < ...
- IX Samara Regional Intercollegiate Programming Contest F 三分
F. Two Points time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- xor和路径(codevs 2412)
题目描述 Description 给定一个无向连通图,其节点编号为1到N,其边的权值为非负整数.试求出一条从1号节点到 N 号节点的路径,使得该路径上经过的边的权值的“XOR 和”最大.该路径可以重复 ...
- CODEVS【1380】没有上司的舞会
题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会 ...
- 调用Outlook发送邮件
#region 查找与指定文件关联在一起的程序的文件名 /// <summary> /// 查找与指定文件关联在一起的程序的文件名 /// </summary> /// < ...
- 【git】把本地项目和远程git仓库相连通
1. 打开在你的项目文件夹,输入下面的命令 git init 输完上面的命令,文件夹中会出现一个.git文件夹,如下图所示,其他的的文件也会出现蓝色小问号的标志 2. 添加所有文件 git add . ...
- 编译程序加不加 -lpthread 的区别【转】
转自:http://www.cnblogs.com/Swartz/articles/3939382.html 作者:Lokki 出处:http://www.cnblogs.com/Swartz/ 欢迎 ...