2008年4月21日 Edited By DingDangXiaoMa
關于XML 在JAVA中的應用,相關技術點DOM ,SAX ,JDOM 及DOM4j
討論可以參考:
http://java.chinaitlab.com/XMLBeans/717370_2.html
另外可以參考:
http://www.javaresearch.org/article/1181.htm
這兩網址,都有XML的解析的例子?,F把他們的例子,實際的跑了一下,分別對四種技術的例子總結如下。
javaresearch 上的例子。
前提準備文件:.xml .dtd ,.xsl
SutInfo.xml
<?xml version="1.0"?>
<?xml-stylesheet href="xsl\StuInfo.xsl" type="text/xsl"?>
<!DOCTYPE LIT:StuInfo SYSTEM "dtd\student.dtd">
<LIT:StuInfo xmlns:LIT="http://www.lit.edu.cn/student/">
<LIT:student>
<LIT:name>bigmouse</LIT:name>
<LIT:sex>male</LIT:sex>
<LIT:lesson>
<LIT:lessonName>math</LIT:lessonName>
<LIT:lessonScore>60</LIT:lessonScore>
</LIT:lesson>
<LIT:lesson>
<LIT:lessonName>Englist</LIT:lessonName>
<LIT:lessonScore>59</LIT:lessonScore>
</LIT:lesson>
<LIT:lesson>
<LIT:lessonName>autoCAD</LIT:lessonName>
<LIT:lessonScore>80</LIT:lessonScore>
</LIT:lesson>
<LIT:lesson>
<LIT:lessonName>SCM</LIT:lessonName>
<LIT:lessonScore>90</LIT:lessonScore>
</LIT:lesson>
<LIT:lesson>
<LIT:lessonName>mechanics</LIT:lessonName>
<LIT:lessonScore>61</LIT:lessonScore>
</LIT:lesson>
</LIT:student>
<LIT:breakLine />
<LIT:student>
<LIT:name>coco</LIT:name>
<LIT:sex>female</LIT:sex>
<LIT:lesson>
<LIT:lessonName>math</LIT:lessonName>
<LIT:lessonScore>90</LIT:lessonScore>
</LIT:lesson>
<LIT:lesson>
<LIT:lessonName>Englist</LIT:lessonName>
<LIT:lessonScore>95</LIT:lessonScore>
</LIT:lesson>
<LIT:lesson>
<LIT:lessonName>C++</LIT:lessonName>
<LIT:lessonScore>80</LIT:lessonScore>
</LIT:lesson>
<LIT:lesson>
<LIT:lessonName>Java</LIT:lessonName>
<LIT:lessonScore>85</LIT:lessonScore>
</LIT:lesson>
</LIT:student>
<LIT:breakLine />
<LIT:master>&masterName;
</LIT:master>
</LIT:StuInfo>
這個xml中的前幾行中,有xsl及.dtd聲明。一個是樣式,一個是doctype聲明。
student.dtd
<!ELEMENT LIT:StuInfo ((LIT:student, LIT:breakLine)*, LIT:master)>
<!ATTLIST LIT:StuInfo xmlns:LIT CDATA #REQUIRED>
<!ELEMENT LIT:student (LIT:name, LIT:sex, LIT:lesson*)>
<!ELEMENT LIT:name (#PCDATA)>
<!ELEMENT LIT:sex (#PCDATA)>
<!ELEMENT LIT:lesson (LIT:lessonName, LIT:lessonScore)>
<!ELEMENT LIT:lessonName (#PCDATA)>
<!ELEMENT LIT:lessonScore (#PCDATA)>
<!ELEMENT LIT:breakLine EMPTY>
<!ELEMENT LIT:master (#PCDATA)>
<!ENTITY masterName SYSTEM "master.txt">
StuInfo.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:LIT="http://www.lit.edu.cn/student/"
version="1.0">
<xsl:template match="LIT:StuInfo">
<html>
<head>
<title>Student Information</title>
</head>
<body>
<xsl:apply-templates select="*"/>
</body>
</html>
</xsl:template>
<xsl:template match="LIT:student">
<li>Name:<xsl:value-of select="LIT:name"/></li>
<li>Sex:<xsl:value-of select="LIT:sex"/></li>
<xsl:for-each select="LIT:lesson">
<li>Lesson:<xsl:value-of select="LIT:lessonName"/>(<xsl:value-of select="LIT:lessonScore"/>)</li>
</xsl:for-each>
</xsl:template>
<xsl:template match="LIT:breakLine">
<hr/>
</xsl:template>
<xsl:template match="master">
<xsl:copy-of select="*"/>
</xsl:template>
</xsl:stylesheet>
上面就是所有的配置文件了。這些文件可放在web工程的根目錄下面。也可以放在webRoot/xml/文件夾下。我就是放到這個文件夾下的,能過web方式來訪問.xml文件的,當然了,也可以通過絕對路徑來訪問這個資源。
在下面的程序中,可能會遇到不配置上面的文件,也可在控制臺下訪問.xml打印出相關數據的。但,我還是建議你,把上面dtd.及.xsl的相關知識弄懂一些。
這一篇就了這里,下一篇講解 DOM例子。