`
zjxs_sky100
  • 浏览: 28230 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

xml的基本学习

阅读更多
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);
}
}
0
0
分享到:
评论

相关推荐

    XML学习指南pdf

    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,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...

    XML 学习指南中文版(PDF)

    XML学习指南,极适合新手学习,其中样式表、处理指令和CDATA、DTD子集、级联样式表、XSL模版等XML基本知识都有详细介绍及教学,本书将有助你开发ASP.NET+XML网络程序时遇到的XML方方面面的问题

    XML学习 入门与深入

    XML语法 适合于入门与深入的程序员 XML的基本语法与HTML和SGML的区别与关系

    xml相关基本操作工具

    xml文件相关的java解析操作,简单的工具和解析类是学习xml基本操作的实例。

    XML学习指南经典中文版

    XML学习指南经典中文版 扩展标记语言(Extensible Markup Language,XML),是目前最有前途的在World Wide Web上保存和传递信息的语言。尽管超文本标记语言(Hypertext Markup Language,HTML)目前是创建Web页的最...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

     好了,通过第三章的学习,我们已经了解了一些XML和DTD的基本术语,但是我们还不知道怎样来写这些文件,需要遵循什么样的语法,在下一章,将重点介绍有关撰写XML和DTD文档的语法。 第四章 XML语法 七.DTD的语法...

    XML学习指南 大部分基本的XML问题

    本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决方案。

    XML指南(学习XML)

    学习XML的入门帮手,XML指南,罗列XML的基本语法法规范

    XML学习指南!!!!!!!!!!!!!!!!!!!!!!!!!!!

    本书回答了大部分基本的XML问题—什么是XML,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...

    xml+Xpath基本应用

    xml+Xpath基本应用,含有Dom4J及支持Xpath所需要的jar包,及xpath的入门教程,并附带一份源代码,提供对xml文件的基本读写及内容的增删改查的操作,方便学习xml,xpath及dom4j

    xml学习手册

    文档包含了xml基本介绍,结构组成以及xml实例,每个组成部门的基本含义,以及xml的基本应用,可以快速了解xml

    XML 学习指南中文版(PDF)简介

    XML 学习指南中文版...XML学习指南,极适合新手学习,其中样式表、处理指令和CDATA、DTD子集、级联样式表、XSL模版等XML基本知识都有详细介绍及教学,本书将有助你开发ASP.NET+XML网络程序时遇到的XML方方面面的问题

    通俗易懂的《XML轻松学习手册》

    很好的东西,很快学习XML,以及XSD,DTD基本内容和进阶。

    《XML》实验(1) -- XML Basics & DTD

    1、安装并学习如何使用XMLSPY集成开发环境完成XML相关的开发工作。 2、熟悉和掌握XML规范的基本内容,包括XML声明、注释、处理指令、元素、属性、CDATA段、预定义实体、命名空间的使用,以及如何进行XML文档良构和...

    XML学习指南中文版

    XML学习指南,极适合新手学习,其中样式表、处理指令和CDATA、DTD子集、级联样式表、XSL模版等XML基本知识都有详细介绍及教学,本书将有助你开发ASP.NET+XML网络程序时遇到的XML方方面面的问题. .

    XML 学习指南中文版(PDF).rar

    XML学习指南,极适合新手学习,其中样式表、处理指令和CDATA、DTD子集、级联样式表、XSL模版等XML基本知识都有详细介绍及教学,本书将有助你开发ASP.NET XML网络程序时遇到的XML方方面面的问题

    [XML入门经典(第4版)].(Beginning.XML.4th.Edition).(美)亨特,(美)拉夫特,(美)福思特.扫描版.pdf

    主要内容有XML基本语法、DTD、XML Schema、RELAX NG、XPath、XSLT、XQuery、DOM、SAX、RSS、Web服务、Ajax、SOAP、CSS、XHTML、SVG和XForms等,每章都有习题,书后附有参考答案,可帮助你全面掌握XML及其应用方法。...

    原生XML数据库基本介绍

    对原生XML数据库的简单介绍,也包含了XPATH、XQUERY的基础知识,适合初学者学习、参考。

Global site tag (gtag.js) - Google Analytics