数据加载中……
JAVA XML 解析之一(准备篇)
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的解析的例子。现把他们的例子,实际的跑了一下,分别对四种技术的例子总结如下。
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例子。

posted on 2008-04-21 16:33 叮当小马 阅读(174) 评论(0)  编辑  收藏 所属分类: XML


只有注册用户登录后才能发表评论。


网站导航: