2011-2012学年 XML期末考试考试题

发布时间 2023-08-15 22:39:24作者: 王闯wangchuang2017

2011-2012学年 期末考试考试题
一、填空题(每题3分,共27分)请将每道题的正确答案填写在题目中的横线上,其余答题 方式均无效。
1、下面代码中的 “学生信息 ”是根原素____根元素_________元素;
<?xml version=”1.0”>
<?DOCTYPE 学生信息 SYSTEM “stu.dtd”>
<!ELEMENT 学生信息 (#PCDATA)>

2、match=“/”语句的含义是____________;

3、能够通过DTD验证的XML文档我们称为___xml 模式___的文档;
4、XML文档中下条语句的作用是:____________;
<?xml-stylesheet type=”text/xsl” href=”mysub/file1.xsl”?>
在DTD的个数限制中常使用的符号是:_*_ 、__+__和__?_;

5、<xsl:value-of select=”name”/>语句的作用是____________;

在DTD文档中下面语句的作用是_________对教师的元素声明_________;
<!ELEMENT 教师(姓名,性别)>
在DTD文档中下面语句的作用是_____ pic1是引用外部实体“fi1.jpg”__________;
<!ENTITIE pic1 SYSTEM “fi1.jpg”>
6、声明语句<!ATTLIST姓名 身份证号ID #REQUIRED>的作用是_____对姓名元素的属性声明________;

二、选择题(每题2分,共20分)下列各题选项中,只有一个选项是正确的,请将正确选项的标号填写在题目后面的横线上,其余答题方式均无效。
1、声明语句<!ATTIBLIST student studentID ID #REQUIRED>的作用是( B )
A、声明元素student的属性studentID是可有可无的;
B、声明元素student的属性studentID是唯一标识类型,可以省略;
C、声明元素student的属性studentID是默认取值,可以省略;
D、声明元素student的属性studentID是唯一标识类型,不可省略;
2、在XML文档的第一条声明语句中,不能使用的属性是( D )
A、version B、encoding C、standalone D、 name
3、不符合格式良好的XML文档要求的是( A )
A、文档可以有一个以上的根元素; B、有符合规范的声明语句;
C、每个元素有正确的起始、结束标记; D、元素正确嵌套,没有交叉现象出现;
4、在进行属性声明时,错误的是(B )
A 标记中可以使用多个属性
B 属性可以出现在起始标记或结束标记中;
C 属性名是大小写敏感的;
D、属性值必须用引号引上;
5、一个XML文档如果符合它的XML Schema文档的定义,称它为( A )
A、结构良好的XML文档 B、有效的XML文档

6、XML文档中语句<!DOCTYPE dlib SYSTEM “mydtd.dtd"> 中SYSTEM的作用是( C )
A、指定运行的操作系统 B、打开系统文件 C、连接外部DTD文件
7、以下不属于XML语法规定的是( B )
A、元素必须正确嵌套
B、标记任意大小写
C、所有的属性值必须放在双引号或单引号中;
D、若文档没有DTD,属性值的默认类型是“CDATA”;
8、声明语句<!ELEMENT 学生信息((地址,成绩)|#PCDATA)>指明元素学生信息是( B )
A、任意子元素组成 ;
B、由子元素“地址”“成绩”和字符数据混合组成;
C、由字符“地址,成绩”和字符“#PCDATA”组成;
D、由文本类数据组成
9、XML Schema文档中语句 :
<element type=”name” minOccurs=“1” maxOccurs=”*”/>
中属性type的作用是( D )
A、指定子元素的属性;
B、指定子元素的数据类型;
C、指定子元素是引用元素声明中name属性值为name的元素;
D、指定子元素名称;

10、下面标记中,非法的XML标记名称是( D )
A、<city.tte> B、<myfile-name> C、<content_11> D、<xml>


三、改错题。下列代码是否正确?若不正确,为什么?(6分×4)
1、(标记的大小写不统一 )
<?xml version="1.0" encoding="UTF-8"?>
<Students>
<学生>
<NAME>jojo</name>
<学号>941003</学号>
</学生>
</Students>
2、( 缺少根元素 )
<?xml version="1.0" encoding="UTF-8"?>
<SCENE>Enter Pozzo and Lucky. </SCENE>
<VLADIMIR>Gogo!</VLADIMIR>
<POZZO>
<ACTION>clutching onto Lucky who staggers.</ACTION>
</POZZO>
3、( )
<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<tt>
<TITLE>My test!</TITLE>
<GREETING>Hello, World!</GREETING>
<SPECIAL>It is written in XML.</SPECIAL>
<AUTHOR>Feelbed</AUTHOR>
</tt>
4、( 缺少xml的声明语句 )
<学生信息>
<person>
<name>王花花</name>
<sex>女</sex>
<age>23</age>
</person>
<person>
<name>李黑黑</name>
<sex>男</sex>
<age>20</age>
</person>
</学生信息>

 

四、根据下面内部DTD文档,完成后继的xml文档。(15分)
<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<!DOCTYPE 教师资料[
<!ELEMENT教师资料 (教师_inf)>
<!ELEMENT教师_inf (教师,配偶?)>
<!ELEMENT 教师 (姓名,年龄,性别,专业,电话)>
<!ELEMENT姓名(#PCDATA)>
<!ELEMENT年龄(#PCDATA)>
<!ELEMENT性别(#PCDATA)>
<!ELEMENT专业(#PCDATA)>
<!ELEMENT电话(#PCDATA)>
<!ELEMENT 配偶 (姓名,性别)>
<!ELEMENT姓名(#PCDATA)>
<!ELEMENT性别(#PCDATA)>
]>
<教师资料>
<教师_inf >
<教师>
<姓名>张三峰</姓名>
<年龄>25</年龄>
<性别>男</性别>
<专业>广告</专业>
<电话>65455555</电话>
</教师>
<配偶>
<姓名>小小</姓名>
<性别>女</性别>
</配偶>
</教师_inf>
</教师资料>

五、写出用于验证下面XML文档的XML Schema文档(14分)。
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<Coach xmlns="x-schema:b.xml">
<Name>斯科拉里</Name>
<Birthday>1948年9月11日</Birthday>
<Interesting>上网</Interesting>
</Coach>
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<Schema
xmlns="urn:schemas –microsoft-com:xml-date"
xmlns="urn:schemas-micorosoft-com:datatypes">
<ElementType name=”Coach” >
<element type=”Name”/>
<element type=”Brithday”/>
<element type=”Interesting”/>
</ElementType>
< ElementType name=” Name” content=”textOnly”/>
< ElementType name=” Brithday” content=”textOnly”/>
< ElementType name=” Interesting ” content=”textOnly”/>
</Schema>

 

复习题
1.什么是XML?XML的特点有哪些?
答案:
XML(eXtensible Markup Language,可扩展标记语言),是由万维网联盟(World Wide Web Consortium,W3C)定义的一种数据交换的规范,是Web上的数据通用语言,使用一系列简单的标记描述数据。
XML的特点有:
(1)XML是一种简单、与平台无关并被广泛采用的标准,可用于Internet上的各种应用。
(2)XML兼容SGML,所以多数SGML应用可转化为XML。
(3)XML文件同HTML文件一样易于创建。
(4)XML文件内容、结构简单,可以更加灵活地进行编程,减少了服务器的工作量。
(5)XML文件结构严谨,可以轻松被计算机程序解析。
(6)XML相对于HTML的优点是它将用户界面与结构化数据分隔开来。这种数据与显示的分离使得集成来自不同源的数据成为可能。
2.简述XML与HTML的区别。
答案:
(1)HTML语言是用来格式化web数据的语言,有固定的标记,每一个标记都有其固定的用法。XML允许自定义标记,用户可以自己定义标记来描述自己领域的信息。
(2)HTML的语法也相当宽松,标记不一定要配对使用,名称不区分大小写。XML语言有其严格的语法规则,标记必须成对使用,严格区分名称的大小写。
(3)不能够很好的描述数据的结构,本质上是一种格式显示语言。XML语言的特点就是将信息的内容和它们的显示样式区分开来,焦点是数据的内容。
3.简述XML解析器的种类及解析步骤。
答案:
XML的解析器分成两大类:综合的解析器和专用的解析器。综合的解析器又分为:基于DOM的解析器和基于事件的解析器。
基于DOM的解析器解析XML文件的一般步骤如下:
(1)扫描命令行得到XML文件名;
(2)创建一个解析器对象;
(3)告诉解析器解析命令行中给定的XML文件;
(4)遍历DOM结果树向标准输出打印;
基于SAX的解析器解析XML文件的一般步骤如下:
(1)创建一个事件处理程序。
(2)创建SAX解析器。
(3)向解析器分配事件处理程序。
(4)解析文档,同时向事件处理程序发送每个事件。


1.XML声明中有哪些属性?都有什么作用?
答案:
XML声明中包含3个属性:version、encoding和standalone。它们的作用分别是:
version属性:指出该XML文件使用的XML版本,目前取值只有1.0。
encoding属性:该属性规定了该XML文件采用编码的字集。取值有:UTF-8、GB2312、ISO-8859-1等。
Standalone属性:声明XML的独立性,即是否与其他文件相关联。取值有yes和no。
5.下面的XML文件中有哪些错误?改正之后用IE验证。
<!--一个简单的XML文件-->
<? xml version=”1.1” ?>
<fruits>
<fruit>
<name>orange<price>
</name>1.2</price>
</fruit>
<fruit>
<name>banana<price>
</name>1.8</price>
</fruit>
</Fruits>
答案:
有5处错误:注释位置不正确;声明中xml前不能有空格;版本号应为1.0;<name>与<price>标记出现了交叉;根标记不匹配。正确的文件:
<?xml version=”1.0” ?>
<!--一个简单的XML文件-->
<fruits>
<fruit>
<name>orange</name>
<price>1.2</price>
</fruit>
<fruit>
<name>banana</name>
<price>1.8</price>
</fruit>
</fruits>
1.什么是有效的XML文件?IE能否检查一个XML文件的有效性?
答案:
符合XML语法规则的XML文件称为规范的XML文件,规范的XML文件再满足其关联的DTD或Schema文件中的约束,这样的XML文件就称为有效的XML文件。
IE不能检查一个XML文件是否是有效的,只能检查XML文件的规范性。要检查一个XML文件的有效性,需通过DOM或SAX解析器。
2.如何将DTD关联到XML文件?
答案:
通过文档类型声明来关联DTD和XML。格式为:
<!DOCTYPE 根标记名称 SYSTEM “DTD的URI”>
<!DOCTYPE 根标记名称 PUBLIC “正式公用标识符” “DTD的URI”>
SYSTEM用于非标准化的外部DTD,PUBLIC用于标准化的外部DTD。
5.下面的文件正确吗?为什么?用IE和本章中的解析器验证你的结论。
mes.dtd
<!ELEMENT message ANY>
<!ELEMENT persion (name,age?,lxfs)>
<!ELEMENT lxfs (#PCDATA,tel|email)*>
<!ELEMENT name (first,last)>
<!ATTLIST name sex (male|female) "male">
<!ELEMENT first %pc; >
<!ELEMENT last %pc;>
<!ELEMENT age %pc;>
<!ELEMENT tel %pc;>
<!ELEMENT email %pc;>
<!ENTITY % pc “(#PCDATA)”>
<!ELEMENT emergency EMPTY>
<!ATTLIST emergency
fire CDATA #FIXED "119"
police CDATA #FIXED "110"
hospital CDATA #FIXED "120"
>

mes.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE SYSTEM "mes.dtd">
<message>
<persion>
<name sex="男">
<first>li</first>
<last>xiao</last>
</name>
<age>25</age>
<lxfs>
<tel>123456</tel>
</lxfs>
</persion>
<persion>
<name>
<first>wang</first>
<last>xiao</last>
</name>
<lxfs></lxfs>
</persion>
<emergency fire="120" police="110" />
</message>
答案:
不正确。有5处错误,“<!ELEMENT lxfs (#PCDATA,tel|email)*>”句“#PCDATA”与“tel”之间应该用“|”,或去掉“#PCDATA”;参数实体应先声明后使用;文档类型声明缺少根元素;“name”的“sex”属性取值错误;“emergency”的“fire”属性取值错误。正确的文件:
mes.dtd
<!ELEMENT message ANY>
<!ELEMENT persion (name,age?,lxfs)>
<!ELEMENT lxfs (#PCDATA|tel|email)*>
<!ELEMENT name (first,last)>
<!ATTLIST name sex (male|female) "male">
<!ENTITY % pc "(#PCDATA)">
<!ELEMENT first %pc; >
<!ELEMENT last %pc;>
<!ELEMENT age %pc;>
<!ELEMENT tel %pc;>
<!ELEMENT email %pc;>
<!ELEMENT emergency EMPTY>
<!ATTLIST emergency
fire CDATA #FIXED "119"
police CDATA #FIXED "110"
hospital CDATA #FIXED "120"
>

mes.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE message SYSTEM "mes.dtd">
<message>
<persion>
<name sex="male">
<first>li</first>
<last>xiao</last>
</name>
<age>25</age>
<lxfs>
<tel>123456</tel>
</lxfs>
</persion>
<persion>
<name>
<first>wang</first>
<last>xiao</last>
</name>
<lxfs></lxfs>
</persion>
<emergency fire="119" police="110" />
</message>

XML文件如何调用CSS样式?
答案:
XML文件调用CSS有3中形式:引用一个外部CSS文件、将CSS语句嵌入到XML文件、同时应用内部CSS和外部CSS。
XML文件调用独立的CSS文件的方法是在XML文件中加入下面一条处理指令:
<?xml-stylesheet type=”text/css” href=”CSS文件的URI”?>
调用内部的CSS通过名称空间的方法引入HTML的style标记:
<persions xmlns:HTML=”http://www.w3.org/Profiles/XHTML-transitional”>
<HTML:style>
CSS代码
</HTML:style>
在XML文件中同时加入上面两段代码就是同时应用内部CSS和外部CSS。
2.如果有一个标记“<name>”,想让标记中的内容显示为文本块,字体为楷体,大小是20磅,颜色为蓝色,背景是黄色。在CSS中应设置哪些属性,属性值如何设置?
答案:
name{
display:block;
font-family:楷体;
font-size:20pt;
color:blue;
background-color:yellow;
}
图5-17
4.为下面的XML文件添加CSS样式,使之显示的效果如图5-18所示。

<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/css" href="xiti4.css" ?>
<books>
<book>
<title>西游记</title>
<picture ID="xiyou"></picture>
<author>吴承恩</author>
<price>32.00</price>
<discretion>西游记以民间传说的唐僧取经的故事和有关话本及杂剧基础上创作而成。西游记前七回叙述孙悟空出世,有大闹天宫等故事。此后……
</discretion>
</book>
<book>
<title>红楼梦</title>
<picture ID="honglou"></picture>
<author>曹雪芹</author>
<price>43.90</price>
<discretion>红楼梦写于十八世纪中叶的清乾隆时代,内容以贾、王、史、薛四大家族为背景,以贾宝玉、林黛玉的爱情悲剧为主线,着重……
</discretion>
</book>
</books>


图5-17
答案:
book{
display:block;
width:400;
border-style:double;
border-right:none;
border-bottom:none;
border-left:none;
}
title{
display:list-item;
text-align:center;
font-size:15;
padding-top:5;
font-weight:bolder;
}
author{
display:block;
list-style-type:square;
font-size:13;
font-style:italic;
font-weight:bold;
background-color:yellow;
}
price{
display:line;
text-align:center;
position:relative;
top:-30;
left:350;
}
discretion{
display:block;
width:300;
text-indent:25;
line-height:2;
}
#xiyou{
display:block;
width:70;
height:100;
background:url(xiyou.bmp);
float:right;
}
#honglou{
display:block;
width:70;
height:100;
background:url(honglou.bmp);
float:right;
}

1.XSL与CSS有哪些不同之处?
答案:
XSL和CSS都可以格式化XML。它们之间主要有以下不同之处:
(1)CSS有局限性。CSS没有办法让XML文件中的同一个数据多次在页面上显示出来,而XSL却能做到这一点。这是因为它们的需找数据的机理是不同的,CSS技术的显示机理是从头到尾一次扫描XML文件,遇到匹配的标记,就以当前的样式显示。XSL则是通过路径的方式来定位数据,从而可以轻易地提取出特定的数据。
(2)CSS语法简单。CSS只是通过选择符和属性列表来定义数据的样式,XSL则提供了循环、条件、选择等控制语句。从这方面讲,XSL更接近于程序设计语言,可以和其他语言进行数据交互,较CSS有本质上的区别。
(3)从语法上讲,XSL是一种特殊的XML文件。因此,XSl必须满足XML规范。CSS则是具有其自身语法的语言。
2.一个XSL文件的基本结构是什么?
答案:
XSL文件是一个特殊的XML文件,所以,XSL的文件结构必须满足XML规范,一个XSL样式文件也必须有XML声明。编码必须和其关联的XML文件编码一致。XSL样式文件的根标记必须是“stylesheet”,必须包含版本声明。使用的名称空间是http://www.w3c.org/TR/WD-xsl。还应该包含根模板。一个XSL样式文件的最基本的结构应该如下代码所示:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template math="/">
内容描述
</xsl:template>
</xsl:stylesheet>
1.什么是数据岛?为什么要引用数据岛?如何声明一个数据岛?
答案:
数据岛是指存在于HTML页面中的XML代码,作为HTML页面数据的来源。
通过数据岛这种技术,实现了页面范围内数据和显示的分离。可以提高数据的共享性,方便数据的维护;可以提高程序的扩展性和代码的重用性。
声明数据岛通过标记<xml>实现,声明内部数据岛时,把XML代码段写在标记<xml>之间。声明外部数据岛时,通过标记<xml>的src属性指明外部的XML文件。在声明数据岛时,需要通过标记<xml>的id属性为数据岛命名,用于标识这个数据岛。
2.如何实现HTML对象和数据岛的绑定并取出需要的数据?
答案:
在HTML中实现对象和数据岛绑定通过对象的“datasrc”属性实现,属性的值为“#”加上数据岛的名称。
从数据岛中取数据的方法是通过HTML对象的“datafld”属性实现,吧需要的数据的标记名称做为“datafld”属性的值。
3.通过记录集管理数据岛都有哪些方法?
答案:
通过记录集管理数据岛,包括取记录、遍历记录、插入和删除记录、对记录集分页和把记录集转换为数组。
取记录有如下方法:
rs(‘标记名称’)
rs(标记的编号)
rs.Fields(‘标记名称’)
rs.Fields(标记的编号)
rs.Fields.Item(‘标记名称’)
rs.Fields.Item(标记的编号)
遍历记录有如下方法:
moveNex()方法:当前记录移动到下一条记录。
movePrevious()方法:当前记录移动到上一条记录。
moveFirst()方法:当前记录移动到第一条记录。
moveLast()方法:当前记录移动到最后一条记录。
moveNumRecords()方法:当前记录向前或向后移动到指定数目的记录。
插入和删除记录的方法包括:
Addnew()方法:添加新纪录
Delete()方法:删除记录
对记录集分页通过设置如下属性实现:
AbsolutePage属性,用于指定当前的页。
PageCount属性,返回记录集中的逻辑页数。
PageSize属性,用于指定每个逻辑页所包含的记录数,默认值是10。
把记录集转换为数组通过getrows()方法实现。
5.编写HTML代码,以下面的XML文件为数据源对象,显示的结果如图7-16所示。功能要求:
(1)分页显示数据。
(2)点击“首页”、“上一页”、“下一页”或“尾页”按钮进行相应页的跳转。
(3)在文本框中输入页码,点击“确定”按钮可以跳到相应的页。

图7-16 程序运行结果
所需的XML文件代码如下:

<?xml version="1.0" encoding="gb2312" ?>
<numbers>
<area>
<country>中国</country><number>0086</number>
</area>
<area>
<country>越南</country><number>0084</number>
</area>
<area>
<country>朝鲜</country><number>00850</number>
</area>
<area>
<country>日本</country><number>0081</number>
</area>
<area>
<country>俄罗斯</country><number>007</number>
</area>
<area>
<country>法国</country><number>0033</number>
</area>
<area>
<country>英国</country><number>0044</number>
</area>
<area>
<country>德国</country><number>00349</number>
</area>
<area>
<country>美国</country><number>001</number>
</area>
<area>
<country>智利</country><number>0056</number>
</area>
<area>
<country>巴西</country><number>0055</number>
</area>
<area>
<country>澳大利亚</country><number>0061</number>
</area>
</numbers>
答案:
<html>
<head>
<title>习题5</title>
</head>
<body>
<center>
<h3>部分国家电话直拨区号表</h3>
<div id="s_t"></div>
第<span id="cpage"></span>页/共<span id="tpage"></span>页&nbsp;&nbsp;
转到第<input type="text" name="pagenum" size="3" />页
<input type="button" value="确定" onclick="gotopage(pagenum.value);" /><br>
<input type="button" value="首 页" onclick="firstpage();" />
<input type="button" value="上一页" onclick="previouspage();" />
<input type="button" value="下一页" onclick="nextpage();" />
<input type="button" value="尾 页" onclick="lastpage();" />
<xml id="students" src="xiti5.xml" />
<script language="javascript">
var rs = students.recordset;
rs.pagesize=3;

function firstpage(){
rs.absolutepage=1;
disp();
}
function previouspage(){
if(rs.absolutepage==1){
alert("已经是第一页!");
}else{
rs.absolutepage=rs.absolutepage-1;
disp();
}
}
function nextpage(){
if(rs.absolutepage==rs.pagecount){
alert("已经是最后一页!");
}else{
rs.absolutepage=rs.absolutepage+1;
disp();
}
}
function lastpage(){
rs.absolutepage=rs.pagecount;
disp();
}
function gotopage(pagenum){
if(pagenum>=1&&pagenum<=rs.pagecount){
rs.absolutepage=pagenum;
disp();
}else{
alert("输入的页码错误!");
}
}
function disp(){
stu_tab="";
stu_tab="<table><tr bgcolor='#AAAAAA'>";
stu_tab=stu_tab+"<th width='200' align='center'>国家名称</th>";
stu_tab=stu_tab+"<th width='200' align='center'>直拨区号</th></tr>";
for(i=1;i<=rs.pagesize;i++){
if(i<=rs.pagesize&&!rs.EOF){
stu_tab=stu_tab+"<tr bgcolor='#EEEEEE'><td align='center'>"+rs(0)+"</td>";
stu_tab=stu_tab+"<td align='center'>"+rs(1)+"</td></tr>";
if(i<rs.pagesize){
rs.moveNext();
}
}
}
stu_tab=stu_tab+"</table>";
s_t.innerHTML=stu_tab;
cpage.innerHTML=rs.absolutepage;
tpage.innerHTML=rs.pagecount;
}
disp()
</script>
</body>
</html>

DOM接口中的Document节点有哪两个子节点?分别代表什么意义?
答案:
Document类型节点的两个子节类型点是DocumentType类型和Element类型。
DocumentType类型节点对应XML文件所关联的DTD文件,通过DocumentType节点的子孙关系可以分析并获得XML文件所关联的DTD文件中的数据。
Element类型节点对应XML文件的标记节点,通过Element节点的子孙关系可以获得XML文件中的数据,Element节点的子节点有Element节点、Text节点和CDATASection节点。
2.Attr节点是Element节点的子节点吗?
答案:
不是。
在XML文件中,属性是标记信息的补充描述,不是标记的子标记。所以,在DOM中Attr对象是包含在Element对象中的,不是Element节点的子节点。要获得Element节点的Attr节点需要Element节点调用getAttribute()方法,该方法返回一个NamedNodeMap对象,NamedNodeMap对象由节点组成,这些节点可以转换为Attr节点。
3.有如下XML代码段:

<element>text</element>

可以通过哪些方法获得标记<element>中的数据“text”?
答案:
第一种方法:获得Element节点“element”,通过Node接口的getTextContent()方法获得“element”节点的文本数据。
第二种方法:获得Element节点“element”的子节点,即Text类型节点,通过Text节点的getWholeText()方法获得文本数据。
4.编写Java程序,解析如下的XML文件,要求输出的结果如图8-12所示。

<?xml version=”1.0” encoding=”gb2312” ?>
<score>
<name>
小李
<math>89</math>
<english>90</english>
</name>
<name>
小张
<math>92</math>
<english>87</english>
</name>
<name>
小赵
<math>95</math>
<english>90</english>
</name>
</score>


图8-12 程序运行结果
答案:

import org.w3c.dom.*;
import javax.xml.parsers.*;
public class xiti4 {
public static void main(String[] args) {
int n = 0;
float mathscore = 0;
float englishscore = 0;
float totalmath = 0;
float totaleng = 0;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("xiti4.xml");
System.out.println("=====成绩单=====");
NodeList nodeList = document.getElementsByTagName("name");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
NodeList cNodeList = node.getChildNodes();
System.out.print(cNodeList.item(0).getTextContent());
for (int j = 0; j < cNodeList.getLength(); j++) {
Node cNode = cNodeList.item(j);
if (cNode.getNodeType() == Node.ELEMENT_NODE) {
String nodeName = cNode.getNodeName();
if (nodeName == "math") {
System.out.print(nodeName+":");
mathscore = Float.parseFloat(cNode.getTextContent());
totalmath += mathscore;
System.out.println(mathscore);
}
if (nodeName == "english") {
System.out.print(nodeName+":");
englishscore = Float.parseFloat(cNode.getTextContent());
totaleng += englishscore;
System.out.println(englishscore);
n++;
System.out.println("总分:"+(mathscore+englishscore));
}
}
}
}
System.out.println("=====平均分=====");
System.out.println("math:"+(totalmath/n));
System.out.println("english:"+(totaleng/n));
} catch (Exception e) {
e.printStackTrace();
}
}
}