Java基础之《XML技术》

主要内容:
XML、AJAX、DOM4J、JavaDB、Metadata

一、XML--eXtensible Markup Language

1、XML最基本的三个概念
XML语言-- 描述事物本身(可扩展)
XSL语言-- 展现事物表现形式
DTD(Scheam)--定义XML语言的语法,XML语言里面可以写什么样的标签

例1-1:
DTD says:你叫橡皮泥,可以有颜色,产地等属性
XML:<橡皮泥 颜色="白色">
     <产地>
       东海傲来国
     </产地>
     </橡皮泥>
XSL:第一种捏法--猫
     第二种捏法--狗

2、XML的历史
SGML--标记语言的鼻祖
TeX、HTML、EDI
W3C

WHY XML?
HTML的缺点:
描述性的人机交流语言,HTML更关注它的 展现形式

XML的优点:
机器与机器之间进行自动化交流的语言
直接描述 数据本身的信息,替代了html装饰语言

应用XML
  XML编程中的应用
  配置文件(tomcat)
  Deploy文件
    (weblogic、websphere、jboss)

3、XML的语法
验证一个.XML文档是否正确
  格式正确
    编程验证
    XML Parser(eg.IE6)
  与DTD文档相符,符合DTD的要求,或者说符合schema的要求( 标签正确
    编程
    XML Parser

4、XML文档结构
1)基本语法(1)
通常从 XML声明开始
通过XML 元素来组织数据
为了是数据更加清晰并且具有自身的格式可以引入 CDATA区数据块
可以在文档中加入 注释

如果需要给XML处理程序提供一些信息,可以包含处理指示


2)基本语法(2)
空格:大多数xml解析器会把这两边的空格忽略掉
  <name>历史的天空</name>
  <name> 历史的天空 </name>

要想保留空格:推荐用CDATA
  <poem xml:space="preserve">
      刀
    一把刀
  一把带血的刀
  </poem>

3)基本语法(3)
PI:Process Instruction 处理指示
  <?......?>
  <?xml-stylesheet href="http://myh12242.blog.163.com/blog/typical.xsl" type="text/xsl"?>
  <?xml-stylesheet href="http://myh12242.blog.163.com/blog/typical.css" type="text/css"?>
  ......

处理指示是指示给解析器的,请你拿到另外一个xsl文件再给我做展现
传递指令给下游程序

4)Namespace
namespace说的是我这些标签来源于哪些个DTD或者是说schema
xmlns定义名称空间

5)特殊字符
>:&gt;
<:&lt;
&:&amp;
":&quot;
':&apos;

6)Unicode之UTF-8
汉字用3个字节来表示


5、XML文件的设计原则
1)尽量应用现有的(标准)DTD(Schema)
  省力、易于交换、应用现有的软件
  http://www.oasis-open.org
  http://www.xml.org

2)属性还是子标签
Property / Element
比较重要的元素用子元素,说明性的或者辅助性的用Property
需要用DTD做严格检查的可以用Element

5、XSL基础
1)XSL概念
XSL
  eXtensible Stylesheet Language(修饰XML的语言)
  XSLT & FO

FO(已淡出视线)
  Formatting Object

XSLT
  T-Transformation

2)XSL用途
XML转换成HTML
XML转换成XML
XSL转换成XSL

所有的XML文件,最根上的节点名字都叫/

6、XPath简介
1)*
现节点下所有元素

2)*/Elem
现节点下所有节点的子节点中为“Elem”的节点

3)@Prop
属性值

4)@*
所有属于现节点的属性

5).
现节点

6)..
现节点的上级

7、DTD & Schema
1)实例xml
<?xml version="1.0" encoding="gb2313"?>
<丛书>
  <书>
    <名>萍踪侠影</名>
    <价 unit="RMB">100.60</价>
  </书>
  <书>
    <名>岳阳楼记</名>
    <价 unit="美元">76.8</价>
  </书>
</丛书>

DTD规定了XML语言的语法和词汇表,也就是说定义了文件的整体结构和语法。
通过DTD,可以对XML文件的合法性进行检验。

2)book.dtd
<?xml version="1.0" encoding="gb2312"?>
<!ELEMENT 丛书 (书*)>
  <!ELEMENT 书 (名,人+,价*)>
    <!ELEMENT 名 (#PCDATA)>
    <!ELEMENT 人 (#PCDATA)>
      <!ATTLIST 人 gender CDATA 'male'>
    <!ELEMENT 价 (#PCDATA)>
      <!ATTLIST 价 unit (RMB|美元|日元) 'RMB'>

PCDATA:Parsed Character Data
可以混合,既有Data,又有子元素

3)引入DTD的方式
外部引用
<?xml version="1.0" standalone="no"?>
<!DOCTYPE 根元素名 SYSTEM "DTD文件名">
<!DOCTYPE 根元素名 PUBLIC "DTD标识名" DTD地址>
  网上公开的,权威机构制定的,大家都可以进行引用的
  DTD标识名:ISO的以“ISO”开头,被改进的非ISO标准以“+”开头,未被改进的非ISO标准的以“-”开头
  例如:“-//DTD所有者名称//所描述的文件类型//语言的种类”

4)Why Schema?
DTD语法怪异,DGML的残留
DTD没有数据类型
没有对DTD的编程接口
Schema简单,本身就是XML,克服了以上的缺点

Schema也是用来定义一个XML文件里能写什么不能写什么,功能和DTD一样的

XML的编程接口:DOM


8、程序分析模型-DOM&SAX
两种不同的XML分析模型
DOM—所有数据位于内存
SAX—流程性分析,不必把所有数据Load到内存中,可分析大型的XML文件,常用于Server-side的XML—XHTML转换

二、DOM4J

1、XML基础
一个文本文档,成对的标签,标签里还有子标签和属性,树状结构。

2、有哪些类库解析xml
DOM = Document Object Model
DOM解析方式是把整个xml文档当作一个对象。

SAX = simple API for XML
SAX解析方式相当于流媒体的方式,读一点解析一点。DOM处理小文件,SAX可以处理几个G的大文件。

DOM4J
虽然名字叫DOM4J,但是它包含了DOM和SAX两种解析方式。

JDOM
虽然名字叫JDOM,但是它包含了DOM和SAX两种解析方式。

严格意义上来讲,DOM、SAX是Java的一个标准,这两种API都非常底层。
所以有人就二次开发,又封装了一层类库。DOM4J和JDOM是这里面的佼佼者。

3、学习dom4j过程
1)二话不说,打开dom4j官方网站下载dom4j
2)搜索dom4j的教程

4、如果项目里要读取一个xml文件,读文件的默认路径在项目目录下,和src目录平级
<hibernate-mapping>
    <class name="com.bjsxt.User" table="t_user"> <!-- class称之为 一个节点或element(元素),name是它的属性,property是它的子节点 -->
        <property name="username"></property>
        <property name="password"></property>
    </class>
</hibernate-mapping>

hibernate-mapping是根节点,class是它的子节点,property是class的子节点。

5、DOM4J使用xpath方式解析xml
1)xpath
path路径,xpath在xml文件找到特定节点的路径

需要引入jar包jaxen-1.1-beta-6.jar,缺少会抛异常Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/NamespaceContext

6、DOM4J生成xml文件
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = new XMLWriter(
                new FileWriter("User1.hbm.xml"), format);
        writer.write(document);
        writer.close();

7、批量生成xml文件
用模板语言:
freemarker
velocity

三、JavaDB介绍

1、JavaDB是Java6自带的小型数据库,名字叫Derby

例子程序:
http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html

2、databasemetadata类
databasemetadata类用来读取数据库里的表结构,根据表结构我们可以做一些事情。

类似于:hibernate可以通过Java类(用反射)来生成XML文件和表,也可以根据表生成XML文件和Java的类

3、刷新目录
Derby默认在项目的根目录下创建一个文件夹

四、DatabaseMetaData类

1、metadata(元数据)
元数据是描述数据的属性。
比如:有一封信,信的内容是数据,在信封上写了一行话“这是一封信”,描述数据内容的属性

2、什么是catalog,什么是schema
拿oracle来举例子:catalog可以说是oracle的整个库,schema可以认为是oracle的表空间或者是某个用户

3、DatabaseMetaData可以用来连上一个数据库,把数据库里面的表相关的信息全取出来

4、注意在Derby里面名字都是大写

5、模板语言用占位符把位置给占住,在程序里面把这个占位符替换成需要的变量值

五、其他

1、ajax框架
DWR、DOJO

javascript框架
extjs、jquery

2、XML的例子程序:
http://pan.baidu.com/s/1nuY2GOh

马士兵语录:
1)需要具备自我发展的能力
2)应用驱动学习
3)人的精力是有限的,你要把自己的精力放在刀刃上,放在那些个现在对你来说最重要的事情上面
4)don't look for mr right, look for mr right now
5)拿到一辆自行车,你上来并不是先理解自行车是怎么传动的,先用
6)只要是入了门,剩下就是查文档
7)推荐一部小说《圈子圈套》
8)有必要看Java源代码吗?
一个叫工程师,一个叫研究员
没有必要,我们工程师你所学的所有的知识都是别人已经研究出来的结果

eclipse快捷键:
alt + /:代码提示、自动补全的功能
比如输入main,使用,自动生成main方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值