主要内容:
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处理程序提供一些信息,可以包含处理指示
Java基础之《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个字节来表示
Java基础之《XML技术》


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方法

相关文章:

  • 2022-12-23
  • 2021-11-18
  • 2021-08-03
  • 2020-03-20
  • 2022-12-23
  • 2021-11-14
  • 2022-02-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-13
  • 2021-11-09
  • 2021-11-24
  • 2021-08-15
相关资源
相似解决方案