- 浏览: 30240 次
- 性别:
- 来自: 杭州
文章分类
最新评论
1、 XML的概念
允许开发者自由定义标签,侧重于数据如何存储和传输,跨平台的数据交换格式,一种轻量级的持久化方案。
XML文档必须遵守基本规范,同时一份有效的文档,还必须遵守语义约束
a) 只有一个根元素
b) 元素必须合理结束
c) 元素之间必须合理嵌套
d) 元素的属性必须要有值
2、 Xml声明
XML声明向解析器提供了关于该文档的基本信息
Encoding:指定对该文档进行解码所用的字符集
Standalone:指定该文档是否需要引用其他资源
如果需要XML文档支持中文,1、保存该文件时使用支持中文的字符集2、声明部分的encoding属性值与保存该文件时所使用的字符集相同
3、 标签的定义
名称:避免使用中画线-,避免使用点号,避免使用英文冒号
空元素定义的标签没有内容,但是可以有属性
字符串包含特使符号的解决方案:使用实体引用、使用CDATA标记
4、 DTD文档语义约束
a) 内部DTD:定义在声明和处理指令之后
b) 外部DTD:<!DOCTYPE 根元素名 SYSTEM “外部DTD的URI”>
c) 公用DTD:<!DOCTYPE 根元素名 PUBLIC “DTD的标识名” “外部DTD的URI”>
d)
5、 Schema
Xmlns[:xxx]=”schemaNamespace” 指定了使用schemaNamespace命名空间下的schema组件时应用xxx前缀作为限定
如果缺省:则无需指定
6、 xml的解析机制
a) DOM机制:DOM已经成为一种应用非常广泛的XML解析API,各种主流浏览器都内置了DOM解析器用于解析XML文档。一次性将整份文档装入内存,转换成内存中的DOM树,DOM树包含的所有节点都是Node对象。
b) SAX机制:解析器处理文档时,会自动对外发送一系列的事件,这些事件由程序员提供的监听器监听。
比较:
DOM速度慢,Sax速度快
DOM对重复访问效率高,SAX每次遍历需要从头开始
DOM占据内存要求高,SAX对内存几乎没说明要求
DOM可读取节点内容,也可修改,SAX通常只读不写
DOM面向对象方式,SAX事件流
DOM4实现读写操作,如下所示:
public static void buildXml(String file) throws IOException {
Document doc = DocumentHelper.createDocument();
// DocumentFactory factory = new DocumentFactory();
// doc = factory.createDocument();
Element root = doc.addElement("books");
Element book = null;
Element ele = null;
for (int i = 0; i < 4; i++ ) {
book = root.addElement("book");
ele = book.addElement("name");
ele.setText("书籍" + i);
ele = book.addElement("money");
ele.setText(i * 10 + "");
}
//第一个参数指定缩进的空格数,第二个参数是否XML格式化,第三个参数指定XML编码格式
OutputFormat format = new OutputFormat(" ",true,"UTF-8");
// FileWriter fw = new FileWriter(file); //此处输出编码根据平台的编码来决定,我这里是GBK,所以要输出UTF-8,通过以下方式实现
OutputStreamWriter fw = new OutputStreamWriter(
new FileOutputStream(new File(file)),"utf-8");
XMLWriter writer = new XMLWriter(fw,format);
writer.write(doc);
fw.close();
}
public static void parseDom(String file) throws Exception {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder build = builderFactory.newDocumentBuilder();
org.w3c.dom.Document source = build.parse(new File(file));
DOMReader r = new DOMReader();
Document doc = r.read(source);
Element root = doc.getRootElement();
System.out.println(root.getName());
List<Element> eles = root.elements("book");
Element ele = null;
for (Iterator<Element> it = eles.iterator(); it.hasNext(); ) {
ele = it.next();
parseNode(ele);
}
}
public static void parseNode(Element root) {
List<Element> eles = root.elements();
Element ele = null;
for (Iterator<Element> it = eles.iterator(); it.hasNext(); ) {
ele = it.next();
System.out.println(ele.getName() + "->" + ele.getText());
}
}
JDOM实现XML文件读写,如下所示:
//jdom创建xml文件
public static void buildJdomXml(String file) throws IOException {
org.jdom.Document doc = new org.jdom.Document();
org.jdom.Element root = new org.jdom.Element("books");
doc.setRootElement(root);
org.jdom.Element book = null;
org.jdom.Element ele = null;
for (int i = 0; i < 4; i++ ) {
book = new org.jdom.Element("book");
root.addContent(book);
ele = new org.jdom.Element("name");
ele.setText("书籍" + i);
book.addContent(ele);
ele = new org.jdom.Element("money");
ele.setText(i * 10 + "");
book.addContent(ele);
}
Format format = Format.getPrettyFormat();
format.setEncoding("utf-8").setIndent(" ");
XMLOutputter outputter = new XMLOutputter(format);
OutputStreamWriter out = new OutputStreamWriter(
new FileOutputStream(file),"utf-8");
outputter.output(doc, out);
out.close();
}
public static void parseJdomXml(String file) throws JDOMException, IOException {
SAXBuilder saxBuilder = new SAXBuilder();
org.jdom.Document doc = saxBuilder.build(new File(file));
org.jdom.Element root = doc.getRootElement();
System.out.println(root.getName());
paseJdomNode(root);
}
public static void paseJdomNode(org.jdom.Element root) {
List<org.jdom.Element> eles = root.getChildren();
org.jdom.Element ele = null;
for (Iterator<org.jdom.Element> it = eles.iterator(); it.hasNext(); ) {
ele = it.next();
System.out.println(ele.getName() + "->" + ele.getText());
paseJdomNode(ele);
}
}
允许开发者自由定义标签,侧重于数据如何存储和传输,跨平台的数据交换格式,一种轻量级的持久化方案。
XML文档必须遵守基本规范,同时一份有效的文档,还必须遵守语义约束
a) 只有一个根元素
b) 元素必须合理结束
c) 元素之间必须合理嵌套
d) 元素的属性必须要有值
2、 Xml声明
XML声明向解析器提供了关于该文档的基本信息
Encoding:指定对该文档进行解码所用的字符集
Standalone:指定该文档是否需要引用其他资源
如果需要XML文档支持中文,1、保存该文件时使用支持中文的字符集2、声明部分的encoding属性值与保存该文件时所使用的字符集相同
3、 标签的定义
名称:避免使用中画线-,避免使用点号,避免使用英文冒号
空元素定义的标签没有内容,但是可以有属性
字符串包含特使符号的解决方案:使用实体引用、使用CDATA标记
4、 DTD文档语义约束
a) 内部DTD:定义在声明和处理指令之后
b) 外部DTD:<!DOCTYPE 根元素名 SYSTEM “外部DTD的URI”>
c) 公用DTD:<!DOCTYPE 根元素名 PUBLIC “DTD的标识名” “外部DTD的URI”>
d)
5、 Schema
Xmlns[:xxx]=”schemaNamespace” 指定了使用schemaNamespace命名空间下的schema组件时应用xxx前缀作为限定
如果缺省:则无需指定
6、 xml的解析机制
a) DOM机制:DOM已经成为一种应用非常广泛的XML解析API,各种主流浏览器都内置了DOM解析器用于解析XML文档。一次性将整份文档装入内存,转换成内存中的DOM树,DOM树包含的所有节点都是Node对象。
b) SAX机制:解析器处理文档时,会自动对外发送一系列的事件,这些事件由程序员提供的监听器监听。
比较:
DOM速度慢,Sax速度快
DOM对重复访问效率高,SAX每次遍历需要从头开始
DOM占据内存要求高,SAX对内存几乎没说明要求
DOM可读取节点内容,也可修改,SAX通常只读不写
DOM面向对象方式,SAX事件流
DOM4实现读写操作,如下所示:
public static void buildXml(String file) throws IOException {
Document doc = DocumentHelper.createDocument();
// DocumentFactory factory = new DocumentFactory();
// doc = factory.createDocument();
Element root = doc.addElement("books");
Element book = null;
Element ele = null;
for (int i = 0; i < 4; i++ ) {
book = root.addElement("book");
ele = book.addElement("name");
ele.setText("书籍" + i);
ele = book.addElement("money");
ele.setText(i * 10 + "");
}
//第一个参数指定缩进的空格数,第二个参数是否XML格式化,第三个参数指定XML编码格式
OutputFormat format = new OutputFormat(" ",true,"UTF-8");
// FileWriter fw = new FileWriter(file); //此处输出编码根据平台的编码来决定,我这里是GBK,所以要输出UTF-8,通过以下方式实现
OutputStreamWriter fw = new OutputStreamWriter(
new FileOutputStream(new File(file)),"utf-8");
XMLWriter writer = new XMLWriter(fw,format);
writer.write(doc);
fw.close();
}
public static void parseDom(String file) throws Exception {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder build = builderFactory.newDocumentBuilder();
org.w3c.dom.Document source = build.parse(new File(file));
DOMReader r = new DOMReader();
Document doc = r.read(source);
Element root = doc.getRootElement();
System.out.println(root.getName());
List<Element> eles = root.elements("book");
Element ele = null;
for (Iterator<Element> it = eles.iterator(); it.hasNext(); ) {
ele = it.next();
parseNode(ele);
}
}
public static void parseNode(Element root) {
List<Element> eles = root.elements();
Element ele = null;
for (Iterator<Element> it = eles.iterator(); it.hasNext(); ) {
ele = it.next();
System.out.println(ele.getName() + "->" + ele.getText());
}
}
JDOM实现XML文件读写,如下所示:
//jdom创建xml文件
public static void buildJdomXml(String file) throws IOException {
org.jdom.Document doc = new org.jdom.Document();
org.jdom.Element root = new org.jdom.Element("books");
doc.setRootElement(root);
org.jdom.Element book = null;
org.jdom.Element ele = null;
for (int i = 0; i < 4; i++ ) {
book = new org.jdom.Element("book");
root.addContent(book);
ele = new org.jdom.Element("name");
ele.setText("书籍" + i);
book.addContent(ele);
ele = new org.jdom.Element("money");
ele.setText(i * 10 + "");
book.addContent(ele);
}
Format format = Format.getPrettyFormat();
format.setEncoding("utf-8").setIndent(" ");
XMLOutputter outputter = new XMLOutputter(format);
OutputStreamWriter out = new OutputStreamWriter(
new FileOutputStream(file),"utf-8");
outputter.output(doc, out);
out.close();
}
public static void parseJdomXml(String file) throws JDOMException, IOException {
SAXBuilder saxBuilder = new SAXBuilder();
org.jdom.Document doc = saxBuilder.build(new File(file));
org.jdom.Element root = doc.getRootElement();
System.out.println(root.getName());
paseJdomNode(root);
}
public static void paseJdomNode(org.jdom.Element root) {
List<org.jdom.Element> eles = root.getChildren();
org.jdom.Element ele = null;
for (Iterator<org.jdom.Element> it = eles.iterator(); it.hasNext(); ) {
ele = it.next();
System.out.println(ele.getName() + "->" + ele.getText());
paseJdomNode(ele);
}
}
发表评论
-
aaaaaaaaaaaa
2014-08-30 09:01 0111111111111111 -
struts2与checkbox的关系
2014-03-25 15:35 622Struts2 框架对checkbox的处理 1、 对于htm ... -
doc命令之关机管理
2014-03-21 09:26 685@echo off set /p p=是否关机(1:关机 2: ... -
金字塔最短路径
2014-03-18 10:02 575class Triangle { private int[] ... -
汉诺塔递归算法
2014-03-15 10:49 580class Hanio { private int st ... -
回溯算法之八皇后
2014-03-13 13:27 606public class EightQueens { ... -
软件生命三大测试的概念和区别
2014-02-17 22:01 0根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和 ... -
Session处理同账号管理
2013-10-22 17:19 771首先使用HttpSessionAttributeListene ... -
线程概念
2013-03-20 21:06 0线程对可共享的、可改变的状态变量进行访问,需要实现协同,否则数 ... -
KMP算法
2013-03-20 14:10 918package zl.character.compare; ... -
parseInt惹的祸
2013-03-04 17:57 811今天项目在实施的过程中,出现了让我懊恼的事情: 卡的金额读不出 ... -
Unable to retrieve metadata for procedure
2013-03-01 13:51 3911第一次用jdbc调用mysql存储过程的过程中犯了一个严重的错 ... -
JDK动态代理和CGLIB动态代理的学习
2012-10-08 17:25 0JDK动态代理是基于java.lang.reflect.Pro ... -
log4j输出spring框架的信息
2012-10-08 17:00 0log4j.logger.org.springframewor ... -
ReadWriteLock多线程下操作
2012-09-06 17:45 999ReadWriteLock是实现多线程环境下同步的一种方式。与 ... -
WIN7 BCompare 启动应用程序发生错误
2012-08-24 11:26 1121WIN7下寻找: 把C:\用户\[用户名]\AppData\S ... -
ant
2012-08-24 11:15 0当使用-jar执行可执行Jar包时,JVM将Jar包所在目录设 ... -
spring框架后处理器的学习
2012-07-27 09:22 730spring框架对容器管理bean和容器本身提供了额外增强功能 ... -
socket简单通讯
2012-07-26 17:09 801package zl.socket.server; impo ... -
java命令执行class文件
2012-07-26 14:30 705eclipse编译出来的class文件如果带有包结构,请在命令 ...
相关推荐
XML的学习首先要理解其基本语法。XML文档由元素(Elements)、属性(Attributes)、文本内容(Text Content)等组成。元素是XML文档的核心,它是通过尖括号包围的标签来定义的,如 `<book>`。元素可以包含其他元素、...
1. XML基本结构: - 文档声明:如`<?xml version="1.0" encoding="UTF-8"?>`,指定XML版本和字符编码。 - 根元素:XML文档必须有一个顶级的根元素,所有其他元素都包含在这个根元素内。 - 元素:XML中的基本构建...
### VC-XML基本操作知识点详解 #### XML与C++结合:使用CMarkup库进行操作 在探讨具体的XML操作之前,我们首先需要理解XML(Extensible Markup Language)是什么以及它为何重要。XML是一种标记语言,类似于HTML,...
通过对这本书的学习,读者不仅可以理解XML的基本概念,还能掌握如何在实际工作中有效地使用XML,解决各种与数据交换和存储相关的问题。无论你是开发者、数据管理员还是内容创作者,理解和掌握XML都是提升工作效率的...
在“XML学习手册第二版”中,它深入浅出地介绍了XML的基本概念、语法规范以及实际应用。 首先,XML的核心是其结构化特性。XML文档由元素构成,元素是XML文档的基本构建块,它们可以包含其他元素、文本或者属性。每...
在学习TinyXML的过程中,阅读提供的“TinyXML学习资料.pdf”文件会非常有帮助。这份资料可能涵盖了TinyXML的基本概念、用法示例以及常见问题的解决方案。通过深入学习,你将能够熟练地利用TinyXML进行XML的解析和...
2.1.3 一些基本的XML规则 2.2 显示XML文档 2.2.1 显示没有样式表的XML文档 2.2.2 在Internet Explorer 5中获取XML 错误 2.2.3 使用级联样式表显示XML文档 第二部分 创建XML文档 第3章 创建格式正确的XML文档 ...
总之,XML编程学习是一个涵盖广泛主题的领域,从基本的XML语法和结构,到高级的XML Schema、命名空间、解析技术和Web服务应用,都需要深入理解和实践。这个word教程很可能是为了帮助初学者逐步掌握这些概念和技能,...
在学习XML的过程中,理解其基本概念和语法是首要步骤,然后可以进一步探索XPath和XSLT来提高数据处理能力。同时,掌握DOM和XML Schema等验证技术,能确保你的XML文档符合预设的规则。此外,实战练习和应用项目将帮助...
1. **XML基本概念**:解释XML的起源,它的设计目标,以及与HTML的区别。XML是基于SGML(Standard Generalized Markup Language)的一个简化版本,旨在传输和存储结构化数据。 2. **XML文档结构**:XML文档由元素、...
### XML轻松学习手册知识点梳理 #### 一、XML概述与入门 **1.1 什么是XML?...通过以上内容的学习,读者可以系统地了解XML的基本概念、关键技术和应用场景,为进一步深入学习和实践打下坚实的基础。
这一章可能涵盖了XML的基本语法,例如元素(Element)、属性(Attribute)、文本内容(Text Content)、注释(Comment)和处理指令(Processing Instruction)。同时,可能会介绍XML如何作为数据交换格式,以及它在...
学习XML时,还需要了解相关的技术,如DTD(Document Type Definition)用于定义XML文档的结构,XML Schema用于更现代和强大的结构验证,XPath用于在XML文档中查找信息,XSLT用于转换XML文档。此外,理解DOM...
XML 基础学习笔记 XML 文档基本结构: 1. 文档说明:一个完整的 XML 文档中必须包含一个文档说明,这个说明表示该文档是一个 XML 文挡,以及遵循那个 XML 版本的规范。最简单的文档说明如下:`<?xml version=”1.0...
XML的学习并不困难,关键在于理解其基本概念和语法规则。XML的语法虽然严格,但这确保了数据的一致性和可靠性,对于处理大量结构化数据非常有利。随着Web技术的发展,XML的重要性日益凸显,无论是网页设计师还是...
学习XML,不仅要掌握基本语法和结构,还需要理解如何使用DOM或其他解析器(如SAX)来处理XML文档,以及如何结合Schema进行验证。此外,还要熟悉XPath和XSLT等工具,它们分别用于在XML文档中查找信息和转换XML文档的...
1. **XML基本语法**:XML文档必须符合一定的语法规则,包括文档声明、元素、属性、实体引用、注释等。例如,每个XML文档都应以`<?xml version="1.0" encoding="UTF-8"?>`开始,声明文档的版本和编码方式。元素以尖...
通过本文的学习心得分享,我们可以了解到XML-RPC的基本原理以及如何构建一个简单的XML-RPC客户端和服务端。在实际开发过程中,根据具体的需求选择合适的Transport Factory是非常重要的一步。此外,对于服务端的开发...
这个“北大XML教学学习课件”是专为深入理解和掌握XML设计的学习资源,旨在帮助用户全面掌握XML的基本概念、语法以及在实际中的应用。 XML起源于1998年W3C组织发布的一种开放标准,其设计目标是为了传输和存储数据...
本书回答了大部分基本的XML问题—什么是XML,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...