XML入门的小介绍 XML入门的小介绍一、小格式格式自是不用说了。稍有基础的人应该看懂如下最简单的表示:<?xml version="1.0"?> <address> <name> <title>cc</title> <first-name> cc </first-name> <last-name> McGoon </last-name> </name> <street> 1401 Main Street </street></address>二、定义文档规范但实际上,我们在写上面代码的时候要先定义XML的格式(语法规则),就好像要先生命变量再给变量赋值一样。一种语法规则是DTD,DTD 语法不同于普通的 XML 语法。另一种是XML Schema ,相对比较复杂的定义,XML Schema本身就是XML。这是DTD的格式:<!-- address.dtd --><!ELEMENT address (name, street)><!ELEMENT name (title? first-name, last-name)><!ELEMENT title (PCDATA)><!ELEMENT first-name (PCDATA)><!ELEMENT last-name (PCDATA)><!ELEMENT street (PCDATA)>这是XML Schema的格式:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="address"> <xsd:complexType> <xsd:sequence> <xsd:element ref="name"/> <xsd:element ref="street"/> <xsd:element ref="city"/> <xsd:element ref="state"/> <xsd:element ref="postal-code"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="name"> <xsd:complexType> <xsd:sequence> <xsd:element ref="title" minOccurs="0"/> <xsd:element ref="first-Name"/> <xsd:element ref="last-Name"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="title" type="xsd:string"/> <xsd:element name="first-Name" type="xsd:string"/> <xsd:element name="last-Name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/></xsd:schema>看起来啊XML Schema是很强大的定义语言。里面可以包含一些构造XML的逻辑,这里先不说了,大体上先有个印象吧。实际上一般的应用使用DTD足以了,我是比较喜欢用DTD定义。以上的这些定义语句,放在XML文件的最上部分。例如:<?xml version="1.0"?> <!-- address.dtd --><!ELEMENT address (name, street)><!ELEMENT name (title? first-name, last-name)><!ELEMENT title (PCDATA)><!ELEMENT first-name (PCDATA)><!ELEMENT last-name (PCDATA)><!ELEMENT street (PCDATA)><address> <name> <title>cc</title> <first-name> cc </first-name> <last-name> McGoon </last-name> </name> <street> 1401 Main Street </street></address>三、解析器XML定义完成以后,要想在java中使用,必须用解析器。解析器有标准的JDOM,SAX。JDOM 的主要特性是它极大地减少了编写的代码数量。网上有jar包下载,例如jive论坛中的配置文件就有使用。仔细看看jive中如何使用Jdom的会比较受启发。我确实把jive中的那部分抽象提取出来了,作为自己的配置文件读取器。四、疑点命名空间-当你的XML发布在互联网上后,你自己定义的address会跟其他很多人的address重复。怎么区分呢?<?xml version="1.0"?><customer_summary xmlns:addr="http://www.xyz.com/addresses/" xmlns:books="http://www.zyx.com/books/" xmlns:mortgage="http://www.yyz.com/title/">... <addr:name><title>Mrs.</title> ... </addr:name> ...... <books:title>Lord of the Rings</books:title> ...... <mortgage:title>NC2948-388-1983</mortgage:title> ...最后要指出的是:名称空间定义中的字符串仅仅是字符串。对,这些字符串看似 URL,其实不是。您可以定义 xmlns:addr="mike",那也是有效的。名称空间唯一的重要性在于其唯一性;这就是为什么大多数名称空间定义看起来象 URL 的原因。XML 解析器不会到http://www.zyx.com/books/ 去搜索 DTD 或模式,它只是把那个文本作为字符串使用。这有些令人困惑,但名称空间就是这样工作的。还是理解不出命名空间的意义有多大!?谁能说一下啊??