XML实验报告
XML同学录实验报告

二 实验要求
设计一个同学通讯录显示网页,以表格的形式进行显示,并能够
分页显示。当点击表格中某个同学的通讯信息时,能够单独显示该同
学的详细通讯信息。同学的通讯信息用 XML 文档存储。
也可以设计其它信息的显示网页,要求同上通讯录显示网页。
三 实验原理
XML 数据岛是指嵌入 HTML 文档中的扩展标记信息。XML 数据
信息科学与工程学部 XML 基础 实验报告
年级 学号
姓名
成绩
专业
实验地点
指导教师
实验项目 XML 数据岛与 HTML 的绑定 实验日期
一 实验目的
1.理解 XML 数据岛和数据源对象的概念;
2.掌握数据绑定的方法;
3.熟悉 HTML 文档中嵌入 XML 数据的方法;
4.掌握 HTML、脚本语言与 XML 结合的方法。
<QQ>53726486</QQ> </student > <student id="0036" sex="男" amount="100" remain="无" discount="8.3">
<name>王铭铭</name> <banji>软件 1 班</banji> <add>河大新区</add> <tel>15837264527</tel> <hometown>唐山</hometown>
<QQ>7346383</QQ> </student > </students> 2、HTML 文档中嵌入 XML 数据,XML 数据岛与 HTML 的绑定主要代码如下:
xml实验报告

xml实验报告XML实验报告一、引言XML(可扩展标记语言)是一种用于描述、存储和传输数据的标记语言。
它具有自我描述性、可扩展性和跨平台性的特点,被广泛应用于各种领域。
本实验旨在通过实际操作,深入了解XML的基本概念、语法和应用。
二、实验目的1. 掌握XML的基本语法和标记规则;2. 学会使用XML解析器解析和处理XML文档;3. 熟悉XML的应用场景,如数据存储、数据交换等。
三、实验环境与工具实验环境:Windows 10实验工具:文本编辑器、XML解析器四、实验过程1. 创建XML文档在文本编辑器中创建一个新的文件,并保存为"experiment.xml"。
XML文档的根元素应该使用尖括号括起来,并且以问号结尾。
在根元素内部,可以定义各种元素和属性。
2. 定义元素和属性在XML文档中,元素用于表示数据的结构和层次关系,属性则用于描述元素的特性和属性值。
通过在尖括号内添加元素名和属性名,可以定义元素和属性。
3. 编写文档内容在XML文档中,可以使用文本、标记和注释等方式来编写文档内容。
文本用于表示实际的数据值,标记用于表示数据的结构,注释则用于添加对文档的说明和解释。
4. 保存并验证XML文档在完成XML文档的编写后,保存文件并使用XML解析器进行验证。
XML解析器可以检查文档的语法和结构是否符合XML规范,以确保文档的正确性。
五、实验结果与分析通过以上实验步骤,我们成功创建了一个简单的XML文档,并使用XML解析器进行验证。
在实际应用中,XML可用于数据存储、数据交换和配置文件等多个场景。
例如,在Web开发中,XML可用于存储和传输网页内容、配置文件和用户数据等。
在移动应用开发中,XML可用于定义应用界面、数据传输和应用配置等。
此外,XML还广泛应用于企业数据交换、电子商务和科学研究等领域。
六、实验总结通过本次实验,我们深入了解了XML的基本概念、语法和应用。
XML作为一种通用的数据描述语言,具有自我描述性、可扩展性和跨平台性的特点,被广泛应用于各个领域。
《设计模式与XML》实验报告2

};
//创建部队的接口
class CreateArmy
{
public:
virtual Army* FactoryMethod();
};
//继承CreateArmy接口,定义具体的CreateArmy来创建具体的物理部队
class ConCreatePhysical:public CreateArmy
{
public:
Army* FactoryMethod();
};
//继承CreateArmy接口,定义具体的CreateArmy来创建具体的魔法部队
class ConCreateMagical:public CreateArmy
{
public:
Army* FactoryMethod();
};
//实现工厂模式
Army* CreateArmy::FactoryMethod()
{
return new Army;
}
Army* ConCreatePhysical::FactoryMethod()
{
return new Physical;
}
Army* ConCreateMagical::FactoryMethod()
public:
Student(string n)
{
name=string(n);
}
string getName()
{
return name;
}Leabharlann };//接待员class Clerk
{
public:
void Regist(string n)
{
cout<<"Student "<<n<<" regists successful!"<<endl;
用XML做通讯录实验报告

综合性实验报告学院:专业:学号:姓名:计算机与信息技术学院综合性、设计性实验报告专业:年级/班级:学年第学期课程名称XML基础指导教师本组成员学号姓名实验地点实验时间项目名称个人通讯薄一的设计与实现实验类型综合性一、实验目的1、掌握XML文档的基本语法,能够得到格式良好的XML文档;2、能够了解并掌握XML DTD的定义方法及其用途;3、能够熟练使用XMLSPY来创建DTD文件及对应的有效的XML文件,并进行验证;二、实验仪器或设备学院提供公共机房,1台学生微型计算机。
三、总体设计(设计原理、设计方案及流程等)设计原理:按照XML、DTD的语法规则来编写、保存文件XML、DTD文件。
设计方案及流程:利用XML文档作为存储载体来存储个人通讯薄,按照以下要求设计并实现该通讯薄:1、内含同学(classmate)、朋友(friend)、家人(home)等人员。
每条通讯录至少包含以下信息:a、姓名(name):必须有一个,其中包含一个枚举类型的性别(sex)属性;b、性别(sex):必须有一个;c、联系方式(tel):必须有一个;d、QQ号:一个或多个;e、地址(address):一个或多个;f、备注(other):一个或多个;g、根据需要可添加其它字段。
2、为该XML文档,编写DTD文档。
四、实验步骤(包括主要步骤、代码分析等)1、按照以上设计编写一个规范的XML文档<?xml version="1.0" encoding="UTF-8"?>这句话放为XML文件的声明,作为文件的第一行,在其前面不能有空白、其他处理指令或注释。
XML声明以<?xml标识开始、以?>标识结束。
在该XML声明中,属性version 的值为1.0,指出了该XML文件使用的XML版本,目前该属性的值只可以取1.0。
属性encoding规定XML文件采用哪种字符集进行编码,在这encoding的值为“UTF-8”,那么标记的名字以及标记包含的文本内容中就可以使用汉字、日文、英文等。
XML实验报告——XML文件的两种显示方式

XML实验报告计算机学院软件工程一、实验题目XML文件的两种显示方式二、实验目的1.理解CSS;2.学会使用CSS显示XML文件;3.理解XSL;4.学会使用XSL显示XML文件;5.对比CSS和XSL;三、实验代码1.用DTD文件生成的XML文件<?xml version="1.0" encoding="UTF-8"?><!--Sample XML file generated by XMLSpy v2007 ()--> <!DOCTYPE bookcase SYSTEM "课堂练习2(DTD文件).dtd"><?xml-stylesheet type="text/css" href="css.css"?><bookcase><book><b-name>书1</b-name><author><name>敖阳月</name><E-mail>邮箱1</E-mail></author><price>10</price><publishing-house><p-name>天津出版社</p-name><address>出版社地址1</address><zipcode>出版社编号1</zipcode><E-mail>出版社邮箱1</E-mail></publishing-house></book><book><b-name>书2</b-name><author><name>敖阳月</name><E-mail>邮箱2</E-mail></author><price>20</price><publishing-house><p-name>出版社名2</p-name><address>出版社地址2</address><zipcode>出版社编号2</zipcode><E-mail>出版社邮箱2</E-mail> </publishing-house></book><book><b-name>书3</b-name><author><name>作者3</name><E-mail>邮箱3</E-mail></author><price>30</price><publishing-house><p-name>天津出版社</p-name><address>出版社地址3</address><zipcode>出版社编号3</zipcode><E-mail>出版社邮箱3</E-mail> </publishing-house></book><book><b-name>书4</b-name><author><name>作者4</name><E-mail>邮箱4</E-mail></author><price>40</price><publishing-house><p-name>出版社名4</p-name><address>出版社地址4</address><zipcode>出版社编号4</zipcode><E-mail>出版社邮箱4</E-mail> </publishing-house></book><book><b-name>书5</b-name><author><name>敖阳月</name><E-mail>邮箱5</E-mail></author><price>50</price><publishing-house><p-name>出版社名5</p-name><address>出版社地址5</address><zipcode>出版社编号5</zipcode><E-mail>出版社邮箱5</E-mail></publishing-house></book><book><b-name>书6</b-name><author><name>作者6</name><E-mail>邮箱6</E-mail></author><price>60</price><publishing-house><p-name>出版社名6</p-name><address>出版社地址6</address><zipcode>出版社编号6</zipcode><E-mail>出版社邮箱6</E-mail> </publishing-house></book></bookcase>2.CSS文件bookcase{background-color: #FFFFCC;}book{border-style: double;border-color: #000080;display: block;margin-bottom: 20pt;padding: 10pt;text-align: center;}name,zipcode,p-name{font-family: 华a文?新?魏o;font-size: medium;font-weight: bold;padding-right:15pt;}b-name,address{font-family: 华a文?行D楷?;color: #008080;padding-right:15pt;display:inherit;}E-mail{font-family: 华a文?行D楷?;color: #888080;padding-right:15pt;display:inherit;}price{font-family: 华a文?彩¨º云?;color: #FF0000;padding-right:15pt;}3.实验截图4.用DTD文件生成的XML文件:<?xml version="1.0" encoding="UTF-8"?><!--Sample XML file generated by XMLSpy v2007 ()--> <!DOCTYPE bookcase SYSTEM "generateDTD.dtd"><?xml-stylesheet type="text/xsl" href="H:\XML\课堂练习5(xsl文件).xsl"?><bookcase><book><b-name>书1</b-name><author><name>敖阳月</name><E-mail>邮箱1</E-mail></author><price>10</price><publishing-house><p-name>出版社名1</p-name><address>出版社地址1</address><zipcode>出版社编号1</zipcode><E-mail>出版社邮箱1</E-mail></publishing-house></book><book><b-name>书2</b-name><author><name>敖阳月</name><E-mail>邮箱2</E-mail></author><price>20</price><publishing-house><p-name>出版社名2</p-name><address>出版社地址2</address><zipcode>出版社编号2</zipcode><E-mail>出版社邮箱2</E-mail></publishing-house></book><book><b-name>书3</b-name><author><name>作者3</name><E-mail>邮箱3</E-mail></author><price>30</price><publishing-house><p-name>出版社名3</p-name><address>出版社地址3</address><zipcode>出版社编号3</zipcode><E-mail>出版社邮箱3</E-mail> </publishing-house></book><book><b-name>书4</b-name><author><name>作者4</name><E-mail>邮箱4</E-mail></author><price>40</price><publishing-house><p-name>出版社名4</p-name><address>出版社地址4</address><zipcode>出版社编号4</zipcode><E-mail>出版社邮箱4</E-mail> </publishing-house></book><book><b-name>书5</b-name><author><name>敖阳月</name><E-mail>邮箱5</E-mail></author><price>50</price><publishing-house><p-name>出版社名5</p-name><address>出版社地址5</address><zipcode>出版社编号5</zipcode><E-mail>出版社邮箱5</E-mail> </publishing-house></book><book><b-name>书6</b-name><author><name>作者6</name><E-mail>邮箱6</E-mail></author><price>60</price><publishing-house><p-name>出版社名6</p-name><address>出版社地址6</address><zipcode>出版社编号6</zipcode><E-mail>出版社邮箱6</E-mail></publishing-house></book></bookcase>5.XSL文件<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="2.0" xmlns:xsl="/1999/XSL/Transform" xmlns:fo="/1999/XSL/Format"xmlns:xs="/2001/XMLSchema"xmlns:fn="/2005/xpath-functions"><xsl:template match="/"><html><head><title>图书信息</title></head><body><center><h2>图书列表</h2><table border="5" width="80%"><tr><th>书名</th><th>作者</th><th>价格</th><th>出版社</th></tr><xsl:for-each select="bookcase/book"><xsl:sort select="price" order="descending"/><tr><td><xsl:value-of select="b-name"/></td><td><xsl:if test="author/name='敖阳月'"><xsl:attributename="style">color:blue</xsl:attribute></xsl:if><xsl:value-of select="author/name"/></td><td><xsl:if test="price>=40"><xsl:attributename="style">color:red;font-size:large</xsl:attribute></xsl:if><xsl:value-of select="price"/></td><xsl:choose><xsl:when test="publishing-house/p-name='天津出版社'"><td style="background-color:gray"><xsl:value-ofselect="publishing-house/p-name"/></td></xsl:when><xsl:otherwise><td style="background-color:yellow"><xsl:value-ofselect="publishing-house/p-name"/></td></xsl:otherwise></xsl:choose></tr></xsl:for-each></table></center></body></html></xsl:template></xsl:stylesheet>6.实验截图四、实验步骤1.CSS显示XMLa)创建一个关于图书信息的DTD文件,通过该DTD文件自动生成有6本书的XML文件;b)新建一个CSS文件,在该文件中将选择器定义为XML文件中的各标签名,并设置各属性以达到不同的显示效果;c)在XML文件的序言后添加PI指令,导入外部CSS;2.XSL显示XMLa)创建一个关于图书信息的DTD文件,通过该DTD文件自动生成有6本书的XML文件;b)新建一个XSL文件,利用XSL语法定义模板元素、选取XML文档中的数据;c)在XML文件的序言后添加PI指令,导入XSL;五、实验心得通过老师介绍CSS禅意花园,并且自己也浏览了该网站,对CSS 产生了极大的兴趣,但下载了CSS文件并仔细浏览分析后发现CSS 真的是博大精深,需要下一定的功夫去研究学习。
(完整word版)xml开发技术实验报告

淮海工学院计算机工程学院实验报告书课程名: 《XML开发技术》题目: DOM解析学号:姓名:一、实验目的与要求DOM(Document Object Model,文档对象模型)是W3C制定的一套规范标准,即规定了解析文件的接口DOM规范的核心是树模型。
对于解析XML文件的解析器,解析器通过读入XML文件在内存中建立一个树,也就是说XML文件的标记、标记的文本内容、实体等都会和内存中树的某个节点相对应。
1.掌握DO解析器的工作原理;2.掌握节点的类型;3.熟练掌握Element、Text、Document等节点的使用。
二、实验内容或题目使用DOM解析器读取存储CD信息的XML文件,练习Element、Text、Document等节点的使用。
三、实验步骤与源程序1.使用以前创建的XML文件,文件中包含多条CD信息、图书信息等。
2.使用DOM,编写JAVA程序,读取XML文件中的数据,并显示到控制台上。
使用两种方法实现该功能:1)使用getElementsByTagName()方法2)使用getChildNodes()方法3.属性值的读取使用两种1)使用getAttribute方法2)使用ATTR节点//getChildNode.javaimport java.io.File;import javax.xml.parsers。
DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c。
dom.Document;import org.w3c。
dom。
Element;import org。
w3c.dom。
Node;import org。
w3c。
dom。
NodeList;public class getChildNode {public static void main(String args[]){ try{DocumentBuilderFactory factory = DocumentBuilderFactory。
xml实验报告
目录第一章实验课程基本信息 (2)第二章如何编写格式良好的XML文档 (2)2.1实验目的 (2)2.2实验要求 (2)2.3实验过程 (3)2.3.1分析过程 (3)2.3.2XML文档编写过程 (3)2.4注意事项 (4)第三章编写DTD和有效的XML实例文档 (5)3.1实验目的 (5)3.2实验要求 (5)3.3实验过程 (5)3.3.1分析过程 (5)3.3.2DTD文档的编写过程 (6)3.4注意事项 (10)第四章编写Schema和有效的XML文档 (10)4.1实验目的 (10)4.2实验要求 (10)4.3实验过程 (11)4.3.1分析过程 (11)4.3.2Schema的编写方式 (11)4.4注意事项 (13)第五章XML文档的转换 (13)5.1实验目的 (13)5.2实验要求 (13)5.3实验过程 (14)5.3.1分析过程 (14)5.3.2XHTML实验编写基本过程 (14)5.4注意事项 (18)第六章DOM编程 (18)6.1实验目的 (18)6.2实验要求 (18)6.3实验过程 (18)6.3.1分析过程 (18)6.3.2DOM编写的基本过程 (19)6.4注意事项 (22)XML编程实验摘要XML自推出以来,尤其是在1998年2月成为W3C推荐标准以来,受到了广泛的支持。
各大软件厂商如IBM、Microsoft、Oracle、Sun等都积极支持并参与XML的研究和产品化工作,先后推出了支持XML的产品或者将改造原有的产品以支持XML,W3C也一直致力于完善XML的整个理论体系。
XML虽然获得了极大的支持,但是它还有很长的路要走。
首先,XML的规则只是迈出了第一步,还有许多技术细节没有解决。
其次,现在虽然出现了一些XML工具和应用,但是其市场反应还有待进一步观察。
另外如何让更多的人迅速学会使用XML,并利用它进行开发,进而促进XML的应用也是一个问题。
实验一,二 熟悉XML环境及编写XML文档.上
《XML编程与应用教程》实验报告>]><年级入学年份="05级"><班级班级号="1班"><学生学号="20050101"><姓名>张三</姓名><电子邮件>2005010101@</电子邮件><QQ>2005010101</QQ><通信地址省份="湖南省"城市="长沙"邮政编码="410128"/> </学生><学生学号="20050102"><姓名>李四</姓名><电子邮件>2005010202@</电子邮件><QQ>2005010202</QQ><通信地址省份="湖南省"城市="长沙"邮政编码="410128"/> </学生><学生学号="20050103"><姓名>王五</姓名><电子邮件>2005010303@</电子邮件><QQ>2005010303</QQ><通信地址省份="湖南省"城市="长沙"邮政编码="410128"/> </学生><学生学号="20050104"><姓名>赵楼</姓名><电子邮件>2005010404@</电子邮件><QQ>2005010404</QQ><通信地址省份="湖南省"城市="长沙"邮政编码="410128"/> </学生><学生学号="20050105"><姓名>黄灯</姓名><电子邮件>2005010505@</电子邮件><QQ>2005010505</QQ><通信地址省份="湖南省"城市="长沙"邮政编码="410128"/> </学生></班级><班级班级号="2班"><学生学号="200502001"><姓名>文凯</姓名><电子邮件>2005020101@</电子邮件><QQ>2005020101</QQ><通信地址省份="湖南省"城市="长沙"邮政编码="410128"/> </学生><学生学号="20050202">。
XML实验报告
XML实验报告计算机系实验报告实验课程:XML实验班级:⽹⼯(2)班学⽣姓名:学⽣学号:实验成绩:⼀、实验⽬的综合验证以下课程主要知识点:1.XML语法熟悉XML语法规范、能够编写形式良好的XML⽂档;2.DTD和xml Schema⽂档约束熟练使⽤DTD和XML Schema定义基本的XML元素、属性、限定等⽅⾯的模式约束。
3.SAX解析、DOM解析以及JAXP了解SAX和DOM解析原理,能够使⽤JAXP接⼝完成对XML⽂档的解析和转换。
4.XSLT和XPath能够使⽤XSLT和XPath完成从XML⽂档到HTML格式的转换。
⼆、实验内容1.编写XML⽂档约束根据下图中显⽰的信息,编写⼀个DTD⽂档,其内容要求能够包含图中所有的信息点。
2.编写⼀个XML⽂档,使其在DTD约束下是有效的假设上⼀步编写的DTD⽂档⽂件名为:books.dtd,编译⼀个XML⽂档使其在books.dtd ⽂件的约束下成为⼀个有效的XML⽂档。
然后,使⽤xmllint程序对你编写的XML⽂档进⾏有效性验证,具体如果使⽤,请参看“《XML》课程教案”中的相关内容。
3.使⽤JAXP接⼝,对上⼀步完成的XML⽂档进⾏解析假设上⼀步编写的XML⽂档名为books.xml。
1)使⽤SAX⽅式解析从XML⽂档books.xml中获得“书名”、“书号”、“作者”、“出版社”、“出版⽇期”这5个记录项的信息,并将其格式化输出到⼀个⽂件books.txt中。
books.txt中的信息格式如下所⽰:书名书号作者出版社出版⽇期--------------------------------------------------------------------name 1234 Tom 清华20112)使⽤DOM⽅式解析从XML⽂档books.xml中获取“书名”、“书号”、“作者”、“出版社”、“出版⽇期”,并将它们封装到⼀个javabean类中,然后利⽤该类中的数据,通过DOM构造⼀棵DOM⽂档树,并将其序列化到⼀个XML⽂件中simplebooks.xml。
《XML技术及应用》实验报告
《XML技术及应用》实验报告学生姓名:学生学号:指导教师:实验成绩:一、实验内容:1、通过Java 编程实现对“通讯录”的XML 文档的解析,并把解析结果存到数据库的表中。
2、进一步实现相反的过程,即将数据库表的内容读出来,并将其转化为XML 文件存储起来。
二、XML文档代码Student.xml<?xml version="1.0" encoding="GB2312"?><StudentInfo><student><name>Jimmey</name><sex>男</sex><address>台湾台北</address><phone>011-2857</phone></student><student><name>华晨宇</name><sex>男</sex><address>湖北武汉</address><phone>1809210</phone></student><student><name>Victorian</name><sex>女</sex><address>上海</address><phone>725120</phone></student><student><name>尼坤</name><sex>男</sex><address>韩国首尔</address><phone>9218337</phone></student></StudentInfo>三、对student.xml进行解析1、配置Access数据库控制面板----系统和安全------管理工具-----数据源(ODBC)-----系统DSN-----添加Access驱动程序-----填写数据源名、路径等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机系
实验报告
实验课程:XML
实验班级:网工(2)班学生姓名:
学生学号:
实验成绩:
一、实验目的
综合验证以下课程主要知识点:
1.XML语法
熟悉XML语法规范、能够编写形式良好的XML文档;
2.DTD和xml Schema文档约束
熟练使用DTD和XML Schema定义基本的XML元素、属性、限定等方面的模式约束。
3.SAX解析、DOM解析以及JAXP
了解SAX和DOM解析原理,能够使用JAXP接口完成对XML文档的解析和转换。
4.XSLT和XPath
能够使用XSLT和XPath完成从XML文档到HTML格式的转换。
二、实验内容
1.编写XML文档约束
根据下图中显示的信息,编写一个DTD文档,其内容要求能够包含图中所有的信息点。
2.编写一个XML文档,使其在DTD约束下是有效的
假设上一步编写的DTD文档文件名为:books.dtd,编译一个XML文档使其在books.dtd 文件的约束下成为一个有效的XML文档。
然后,使用xmllint程序对你编写的XML文档进行有效性验证,具体如果使用,请参看“《XML》课程教案”中的相关内容。
3.使用JAXP接口,对上一步完成的XML文档进行解析
假设上一步编写的XML文档名为books.xml。
1)使用SAX方式解析
从XML文档books.xml中获得“书名”、“书号”、“作者”、“出版社”、“出版日期”这5个记录项的信息,并将其格式化输出到一个文件books.txt中。
books.txt中的信息格式如下所示:
书名书号作者出版社出版日期
--------------------------------------------------------------------
name 1234 Tom 清华2011
2)使用DOM方式解析
从XML文档books.xml中获取“书名”、“书号”、“作者”、“出版社”、“出版日期”,并将它们封装到一个javabean类中,然后利用该类中的数据,通过DOM构造一棵DOM文档树,并将其序列化到一个XML文件中simplebooks.xml。
4.编写一个XSLT转换文档,转换到HTML
对于上一步通过DOM序列化出来的simplebooks.xml,编写一个XSLT文档books.xslt,将simplebooks.xml转换成为一个HTML格式表格形式呈现。
该HTML通过浏览器呈现出来的外观应该类似如下所示:
书名书号作者出版社出版日期
name 1234 Tom 清华2011
使用JAXP的XSL转换工厂,获得simpleboosk.xml通过books.xslt转换出来的HTML文件simplebooks.html。
三、实验步骤
1.编写XML文档约束
books.dtd文档截图如下:
2.编写一个XML文档,使其在DTD约束下是有效的books.xml文档截图如下:
books.xml在IE下打开截图如下:
验证有效性的截图如下:
在此实验过程中遇到的问题以及解决的办法:
1.最开始看到要求上写着书分为中文原版和外文翻译的时候,我大脑里蹦出来的就是为每一个book添加一个属性language来标识是中文还是外文,如下:
a)当language=”ch”时,为中文,则后面的元素:原书名、译者、原出版社就不用出
现了。
b)当language=”en”,为外文,后面的属性全部要出现。
但是等到我真正开始编写时,才知道它的难度,而且考虑到后面的解析也不好弄,就直接用了元素来代替,更加简单与直观,这里也是提出这种思路,有待以后实现!
2.编码格式问题:
在最开始编码时,我使用的是UTF-8,因为UTF-8是包含gb2312的,而且它的字符集要比gb2312大得多,但是有效性通不过,我意识到是否是文件保存时编码格式没改,于是我又把文件保存时编码格式改为UTF-8,这次通过了!可惜在DOS下验证有效性时,出现了乱码···当我把编码中的UTF-8改为gb2312。
而且文件保存时编码格式改为ANSI 时,神奇般的在DOS下验证有效性通过了(如上面的图所示)。
太不可思议了,小字符集竟然比大字符集还要强大,我不死心,于是继续查资料,终于发现:
哈哈,明白了吗?DOS下采用的编码格式竟然是GBK,肯定不会支持UTF-8格式的啊,同时,我又查到可以用临时修改方法修改cmd的编码格式:chcp 437
再继续验证,果然可以啦~
至此,我明白了一句话:解决编码问题,是程序员最基本的素质之一!
关于修改cmd编码格式的链接资料:/samdy2008/article/details/5120466
3.使用JAXP接口,对上一步完成的XML文档进行解析
1)使用SAX方式解析
1.Book类中属性的声明:
2. SaxParser获得解析器并对文件进行解析:
3.MyHandler事件处理器:
books.txt文档截图如下:
在此实验过程中遇到的问题以及解决的办法:
1.在最开始编写代码时,我的思路是边读取边写出到文件上,就在全部写完,打
开txt文件一看,书号下面得到的竟然是作者,作者下面则是出版社,细细分析,发现写入文件的顺序与之前xml文件上元素的顺序是一样的,而和我们需要获取的顺序却不一样,于是我就在想难道不能先读取后面的,再读取前面的吗?查过资料后,答案是:不能!我也明白了SAX解析器的原理:流机制!
SAX分析器在对XML文档进行分析时,触发了一系列的事件,由于事件触发本身是有时序性的,因此,SAX提供的是一种顺序访问机制,对于已经分
析过的部分,不能再倒回去重新处理。
SAX之所以被叫做"简单"应用程序接
口,是因为SAX分析器只做了一些简单的工作,大部分工作还要由应用程序
自己去做。
也就是说,SAX分析器在实现时,它只是顺序地检查XML文档中的
字节流,判断当前字节是XML语法中的哪一部分、是否符合XML语法,然后再触发相应的事件,而事件处理函数本身则要由应用程序自己来实现。
最后我还是采用了封装类的方法实现了!
2.需要提出的是author这个属性,在前面的book类中,可以看到,我采用的方法
是集合加泛型,即List<String>,原因是author可能有多个,如果只是单纯的定义为String,则在进行解析的时候会出现后一个解析的会替换掉前一个,简单却不完美,故我采用了集合加泛型的方法,虽然解析的时候需要用的迭代、遍历等方法,但最终做出来还是很有成就感的!
2)使用DOM方式解析
1.Book类中的和SAX中的一样,就不列出来了。
2.DomParser获得Dom解析器并进行解析:3.DOMSerializer序列化:
simplebooks.xml文档截图如下:simplebooks.xml在IE下打开截图如下:
在此实验过程中遇到的问题以及解决的办法:
这个过程相对来说就简单一些了,可能是对解析的机制有些清晰了吧,在此,我也想着分析一下SAX和DOM解析的不同之处以及各种的优缺点:
1.SAX解析的机制前面已经说过了,同DOM分析器相比,SAX分析器缺乏灵活性。
然
而,由于SAX分析器实现简单,对内存要求比较低,因此实现效率比较高,对于那些只需要访问XML文档中的数据而不对文档进行更改的应用程序来说,SAX分析器更为合适。
2.DOM提供了一种通过分层对象模型来访问XML文档信息的方式,这些分层
对象模型依据XML的文档结构形成了一棵节点树。
无论XML文档中所描述的是什么类型的信息,即便是制表数据、项目列表或一个文档,利用DOM所生成的模型都是节点树的形式。
也就是说,DOM强制使用树模型来访问XML 文档中的信息。
由于XML本质上就是一种分层结构,所以这种描述方法是相当有效的。
DOM树所提供的随机访问方式给应用程序的开发带来了很大的灵活性,它可以任意地控制整个XML文档中的内容。
然而,由于DOM分析器把整个XML 文
档转化成DOM树放在了内存中,因此,当文档比较大或者结构比较复杂时,对内存的需求就比较高。
而且,对于结构复杂的树的遍历也是一项耗时的操作。
所以,DOM分析器对机器性能的要求比较高,实现效率不十分理想。
不过,由于DOM分析器所采用的树结构的思想与XML文档的结构相吻合,同时鉴
于随机访问所带来的方便,因此,DOM分析器还是有很广泛的使用价值的。
4.编写一个XSLT转换文档,转换到HTML
XSLT文档截图:
使用JAXP的XSL转换工厂:simplebooks.html在IE下打开:
在此实验过程中遇到的问题以及解决的办法:
主要是在编写XSLT文档是遇到的问题,由于第二本书的作者有两个,如果采用一般的方法则在html中只会出现一个作者,在系统的学习了一般XSLT之后,我决定采用XPath,直接去读取作者这个节点(如上所示),果然可以,但两个作者之间需要有空格进行区分, ;满足了我的要求, ;相当于html中的 哈哈,一切都在预料之中!
至此,实验终于大功告成!!!
四、实验总结。