XML实验报告.docx
《XML实验报告.docx》由会员分享,可在线阅读,更多相关《XML实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
XML实验报告
学生学号
0120910680421
实验课成绩
武汉理工大学
学生实验报告书
课程名称XML程序设计
开课学院计算机科学与技术学院
指导老师杨朝阳
学生姓名朱鹏
专业班级软件0904
2011—2012学年第二学期
实验课程名称:
XML程序设计
实验项目名称
设计Schema类型的XML文档
实验成绩
实验者
朱鹏
专业班级
软件0904
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
1、实验内容:
(1)为学生信息建立一个Schema文档类型定义XML文档,结果应该为合法的。
2、程序的编写要求:
(1)文档内容要求:
03届(学生信息(学号、姓名、班级、电子邮件、QQ、通信地址(省份(或州)、城市、街道、邮政编码)));
(2)并且要求建立至少两个班级、每个班级至少五个学生的信息;
(3)在使用过程中根据个人设计,使得XML文档中包含以下技术的使用:
a、外部参数实体的使用
b、外部通用实体的使用
c、Schema文档中属性声明的使用(如:
CDATA类型、枚举类型、ID类型、IDREF类型、ENTITIS类型)
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
实验步骤:
1、利用XMLWriter根据实验内容创建一个XML的数据模型Schema文档;
2、根据Schema模式文档生成相应的XML;
3、为XML输入相应的学生数据;
4、将该文档存为学生信息XML文档;
5、修改调试,直到在浏览器中可以看到正确的结果;
三、主要仪器设备及耗材
个人计算机
AltovaXMLSpy
第二部分:
实验调试与结果分析(可加页)
一、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
三、实验小结、建议及体会
通过这次实验,对XML有了初步的认识,了解XMLSchema模式,掌握XML文档命名空间和属性的使用方法,掌握XML文档合法性验证的方法,掌握模式Schema的基本语法。
验证HTML文件
习题5第4题
请写出下列XSL样式表文件Xiti4.xsl变换后得到的HTML文件。
Xiti4.xml
xmlversion="1.0"encoding="UTF-8"?
>
xml-stylesheethref="Xiti4.xsl"type="text/xsl"?
<灯具>
<台灯>
<价格>234元价格>
<产地>产地>
台灯>
<壁灯>
<价格>56元价格>
<产地>上海产地>
壁灯>
灯具>
Xiti4.xsl
stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/TR/WD-xsl">templatematch="/">for-eachselect="灯具/*">copy/>apply-templates/>for-each>
stylesheetversion="1.0"xmlns:
xsl="http:
//www.w3.org/TR/WD-xsl">
templatematch="/">for-eachselect="灯具/*">copy/>apply-templates/>
templatematch="/">
for-eachselect="灯具/*">copy/>apply-templates/>
for-eachselect="灯具/*">
copy/>
apply-templates/>
for-each>
template>
templatematch="//价格">value-of/>
templatematch="//价格">
value-of/>
templatematch="//产地">value-of/>
templatematch="//产地">
stylesheet>
1.使用AltovaXMLSpy编写Xiti4.xsl和Xiti4.xml。
2.查看Xiti4.xml显示的结果。
3.编写HTML文件,对比。
HTML源代码为:
1、使用浏览器打开xml文件,结果如下:
2、使用浏览器打开html文件,结果如下:
结果是一样的!
二、实验小结、建议及体会
通过这次实验,学习了Html的知识和xsl的知识,了解了xml如何通过关联xsl文件来作用。
对xml有了进一步的了解。
了解xsl的一些应用领域。
这次实验,也让我体会到xml功能的强大和使用的方便。
!
用DOM技术解析xml文件
使用DOM技术解析以下xml文件,并计算两本书各自的销售总额。
xml-stylesheethref="fourteenXSL.xsl"type="text/xsl"?
<图书信息>
<书名>Java程序设计书名>
<出版日期>2009-10-10出版日期>
<发行量>5000册发行量>
<单价>36元单价>
<书名>JSP程序设计书名>
<出版日期>2009-7-10出版日期>
<发行量>3000册发行量>
<单价>32元单价>
图书信息>
算法描述:
importorg.w3c.dom.*;
importjavax.xml.parsers.*;
importjava.io.*;
publicclassJAXPTwo
{
publicstaticvoidmain(String[]args)
try
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
DocumentBuilderdomParser=factory.newDocumentBuilder();
Documentdocument=domParser.parse(newFile("example5_14.xml"));
NodeListnodeList=document.getChildNodes();
output(nodeList);
System.out.println("总发行量为:
"+number+"册");
System.out.println("总销售额为:
"+number*(price/2)+"元");
}
catch(Exceptione)
System.out.println(e);
publicstaticvoidoutput(NodeListnodeList)
intsize=nodeList.getLength();
for(intk=0;k{Nodenode=nodeList.item(k);if(node.getNodeType()==Node.TEXT_NODE){TexttextNode=(Text)node;Stringcontent=textNode.getWholeText();if(((Element)textNode.getParentNode()).getNodeName().equals("发行量")){content=textNode.getWholeText();number=number+Double.parseDouble(content.trim());}if(((Element)textNode.getParentNode()).getNodeName().equals("单价")){content=textNode.getWholeText();price=price+Double.parseDouble(content.trim());}System.out.print(content);}if(node.getNodeType()==Node.ELEMENT_NODE){ElementelementNode=(Element)node;Stringname=elementNode.getNodeName();System.out.print(name+":");NodeListnodes=elementNode.getChildNodes();output(nodes);}}}privatestaticdoublenumber=0;privatestaticdoubleprice=0;}三、主要仪器设备及耗材个人计算机,AltovaXMLSpy、eclipse第二部分:实验调试与结果分析(可加页)一、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)使用eclipse编辑并运行,结果如下:结果正确! 二、实验小结、建议及体会通过这次实验,进一步学习了DOM解析器。掌握了一些DOM解析器的基本知识。也了解到DOM解析器的好处:一个应用程序可以方便地操作内存中树形结构的数据的节点来处理XML文件,以便获取所需要的数据。 实验课程名称:XML程序设计实验项目名称用SAX技术解析XML文件实验成绩实验者朱鹏专业班级软件0904组别同组者实验日期年月日第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)有如下的XML文件,请编写Java程序(参考例7_6),使用SAX解析器获取标记中的文本数据,并根据这些数据计算出“货品列表”中的全部货品的总重量。xmlversion="1.0"encoding="UTF-8"?><货品列表><货品><名称>电视名称><重量>23.8重量>货品><货品><名称>洗衣机名称><重量>67.2重量>货品>货品列表>二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)算法描述:importjavax.xml.parsers.*;importorg.xml.sax.helpers.*;importorg.xml.sax.*;importjava.io.*;publicclassshiyan4{publicstaticvoidmain(String[]args){try{Filefile=newFile("Xiti7.xml");SAXParserFactoryfactory=SAXParserFactory.newInstance();SAXParsersaxParser=factory.newSAXParser();EventHandlerhandler=newEventHandler();saxParser.parse(file,handler);}catch(Exceptione){System.out.println(e);}}}classEventHandlerextendsDefaultHandler{booleanisComputabled;intcount;doubleTotalWeight;StringBuffernumberContent,otherContent;publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesatts){numberContent=newStringBuffer();otherContent=newStringBuffer();System.out.print("<"+qName+">");if(qName.startsWith("重量"))isComputabled=true;if(qName.endsWith("货品")){count++;}}publicvoidcharacters(char[]ch,intstart,intlength){Stringtext=newString(ch,start,length);if(isComputabled==true)numberContent.append(text);System.out.print(text);}publicvoidendElement(Stringuri,StringlocalName,StringqName){System.out.print(""+qName+">");if(isComputabled){StringnumberStr=newString(numberContent);numberStr=numberStr.trim();doubled=Double.parseDouble(numberStr);TotalWeight=TotalWeight+d;}isComputabled=false;}publicvoidendDocument(){System.out.println("");System.out.println("共有"+count+"件货品");System.out.println("货品列表中全部货品的总重量为:"+TotalWeight);}}三、主要仪器设备及耗材个人计算机,AltovaXMLSpy、eclipse第二部分:实验调试与结果分析(可加页)一、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)使用eclipse编辑并运行,结果如下: 二、实验小结、建议及体会通过这次实验,对SAX技术有了进一步了解,它是基于事件处理的解析器。初步掌握了XML的一些技术。因为还没涉及到有关这方面的知识,还没深刻体会到XML的重要性。但在今后学习中,更加深入掌握这门技术。加强实践,巩固基础知识,认真学习xml和sax有关知识。
Nodenode=nodeList.item(k);
if(node.getNodeType()==Node.TEXT_NODE)
TexttextNode=(Text)node;
Stringcontent=textNode.getWholeText();
if(((Element)textNode.getParentNode()).getNodeName().equals("发行量"))
content=textNode.getWholeText();
number=number+Double.parseDouble(content.trim());
if(((Element)textNode.getParentNode()).getNodeName().equals("单价"))
price=price+Double.parseDouble(content.trim());
System.out.print(content);
if(node.getNodeType()==Node.ELEMENT_NODE)
ElementelementNode=(Element)node;
Stringname=elementNode.getNodeName();
System.out.print(name+":
");
NodeListnodes=elementNode.getChildNodes();
output(nodes);
privatestaticdoublenumber=0;
privatestaticdoubleprice=0;
个人计算机,AltovaXMLSpy、eclipse
使用eclipse编辑并运行,结果如下:
结果正确!
通过这次实验,进一步学习了DOM解析器。
掌握了一些DOM解析器的基本知识。
也了解到DOM解析器的好处:
一个应用程序可以方便地操作内存中树形结构的数据的节点来处理XML文件,以便获取所需要的数据。
用SAX技术解析XML文件
有如下的XML文件,请编写Java程序(参考例7_6),使用SAX解析器获取标记中的文本数据,并根据这些数据计算出“货品列表”中的全部货品的总重量。
<货品列表>
<货品>
<名称>电视名称>
<重量>23.8重量>
货品>
<名称>洗衣机名称>
<重量>67.2重量>
货品列表>
importorg.xml.sax.helpers.*;
importorg.xml.sax.*;
publicclassshiyan4{
publicstaticvoidmain(String[]args){
try{
Filefile=newFile("Xiti7.xml");
SAXParserFactoryfactory=SAXParserFactory.newInstance();
SAXParsersaxParser=factory.newSAXParser();
EventHandlerhandler=newEventHandler();
saxParser.parse(file,handler);
catch(Exceptione){
classEventHandlerextendsDefaultHandler
booleanisComputabled;
intcount;
doubleTotalWeight;
StringBuffernumberContent,otherContent;
publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesatts)
numberContent=newStringBuffer();
otherContent=newStringBuffer();
System.out.print("<"+qName+">");
if(qName.startsWith("重量"))
isComputabled=true;
if(qName.endsWith("货品"))
count++;
publicvoidcharacters(char[]ch,intstart,intlength){
Stringtext=newString(ch,start,length);
if(isComputabled==true)
numberContent.append(text);
System.out.print(text);
publicvoidendElement(Stringuri,StringlocalName,StringqName)
System.out.print(""+qName+">");
if(isComputabled)
StringnumberStr=newString(numberContent);
numberStr=numberStr.trim();
doubled=Double.parseDouble(numberStr);
TotalWeight=TotalWeight+d;
isComputabled=false;
publicvoidendDocument()
System.out.println("");
System.out.println("共有"+count+"件货品");
System.out.println("货品列表中全部货品的总重量为:
"+TotalWeight);
通过这次实验,对SAX技术有了进一步了解,它是基于事件处理的解析器。
初步掌握了XML的一些技术。
因为还没涉及到有关这方面的知识,还没深刻体会到XML的重要性。
但在今后学习中,更加深入掌握这门技术。
加强实践,巩固基础知识,认真学习xml和sax有关知识。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1