XML基础复习习题2016
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题
1.XML采用以下哪种数据组织结构?( C )
A 星状结构
B 线状结构C树状结构D网状结构
2.下列关于XML文档中根元素的说法不正确的是( D )
A每一个结构完整的XML文档中有且只有一个根元素
B 根元素完全包括了文档中其他所有元素
C 根元素的起始标记要放在其他所有元素的起始标记之前,而根元素的结束标记要放在其他所有元素的结束标记之后
D 根元素不能包含属性节点
3.下面哪个公司或组织制定了XML:( C )
A ISO
B Oracle
C W3C
D Micrsoft
4.>、<、&等在XML文档中被赋予了特殊的意义,所以在XML文档中不能直接包含这
些字符,而是对这些字符采用了特殊编码,< 对应的特殊编码是:(B)
A &
B <
C &lgt;
D &quto;
5.以下说法不符合XML语法规则的是( C )
A)标记头和标记末的大小写一致
B)元素之间要正确的嵌套
C)结束标记可有可无
D)每个XML文档只能有一个根元素
6.以下XML片段写法正确的是( D )
A <root attribute=”first”/>
B <root attribute=first />
C <root attribute/>
D <root attribute=”first” value=”aaa”/>
E <root attribute=”first” value=”aaa”>
7.用于修饰属性的缺省值不包含哪一项( C )
A #FIXED
B #REQUIRED
C #PCDATA
D #IMPLIED
8.以下关于SAX的说法正确的是( B )
A)使用SAX可修改XML
B)SAX是事件驱动型XML解析器
C)SAX是对象模型XML解析器
D)以上答案都不对
9.DOM解析中,下面( A )方法可以获得XML文档节点树的根元素节点。
A.getDocumentElement() B. getEntities()
C. getPublicID()
D. getWholeText()
10.下列标记定义不合法的是(C)。
A. <price>
B. <_author>
C. <2title>
D. <>
11.解析下面XML文档时,下列说法正确的是(A)。
<book>
<author>耿祥义</author>
<ISBN>9787302206491</ISBN>
</book>
A. “耿祥义”是文本对象
B. “耿祥义”是元素对象
C. <book>是元素对象,同样也是文本对象
D. <ISBN>是元素对象,同样也是文本对象
12.关于DOM的描述错误的是(C)。
A. DOM使开发者能够以编程方式读取、操作和修改XML文档
B. W3C组织公布了DOM模型的规范,然后各个软件厂商(比如微软)再根据W3C的规范开发DOM解析器,并且提供一系列的编程API,这些API都是遵守W3C规范的
C. DOM模型是W3C组织开发出来的一个在内存中表示XML数据的线性模型
D. 能使用JavaScript进行DOM开发,也能使用Java、C#
13.XML名称空间名是指(C)。
A. W3C制定的一个技术规范
B. 一个可以访问到的URI
C. 任何URI
D. 紧跟在xmlns:后面的前缀名称
14.当SAX解析器解析到文档中元素的开始标记时,会调用( A )方法。
A.public void startElement()
B.public void startDocument()
C.public void startPrefixMapping()
D.public void startDocumentLocator()
15.以下事件处理函数哪一个不是SAX实现会产生的(C)
A void startDocument()
B void characters(char[] ch, int start, int length)
C void startElement(String uri, String localName, String qName)
D void endElement(String uri, String localName, String qName)
16.SAX的默认基类DefaultHandler类实现了那些接口( A )
A)Attributes接口
B)DTDHandler接口
C)ErrorHandler接口
D)ContentHandler接口
17.在XML文档的第一条声明语句中,不能使用的属性是( D)
A、version
B、encoding
C、standalone
D、name
18.不符合格式良好的XML文档要求的是( A )
A、文档可以有一个以上的根元素;
B、有符合规范的声明语句;
C、每个元素有正确的起始、结束标记;
D、元素正确嵌套,没有交叉现象出现;
19.在进行属性声明时,错误的是(B)
A 标记中可以使用多个属性
B 属性可以出现在起始标记或结束标记中;
C 属性名是大小写敏感的;
D 属性值必须用引号引上;
20.以下不属于XML语法规定的是(B)
A、元素必须正确嵌套
B、标记任意大小写
C、所有的属性值必须放在双引号或单引号中;
D、若文档没有DTD,属性值的默认类型是“CDA TA”;
21.在XML中,下列关于DOM的叙述不正确的。
D
a) DOM是独立于开发语言和平台的,因此使用Visnal Basic、Java、Visual C++等开发工具使用的DOM编程API是一致的
b) XML文档通过load方法被装载进内存后,在内存中形成一个DOM文档对象模型树
c) 通过DOM API,软件开发人员可以控制XML文档的结构和内容
d)通过DOM在XML文档中只能按照顺序方式导航
22.XML中,(B)是文档对象模型DOM中的基本对象,元素、属性、注释、处理指令等
都可以认为是它。
A Document
B Node
C NodeList
D Element
23.阅读下面XML文档,然后判断下列说法正确的是。
C
<book>
<author>tom</author>
<bookcode>12</bookcode>
</book>
a) <book>是元素对象,同样也是文本对象
b) <author>是元素对象,同样也是文本对象
c) tom是文本对象
d) tom是元素对象
24.<?xml version="1.0"?>
<!DOCTYPE customer[
<!ENTITY location "jianwai street">
]>
<customer>
<name>jack</name>
<address>&location;</address>
</customer>
关于上述Xml文档,以下描述正确的是( B )。
a) 该Xml文档中使用了外部DTD。
b) 通过浏览器打开上述Xml文档时,字符串jianwai street代替了& location;
c) 该Xml文档不是有效的XML文档。
25.以下关于XML文档的声明的语句正确的是。
D
A)<xml version="1.0" encoding="UTF-8">
B)<?XML version="1.0" encoding="UTF-8"?>
C)<?xml Version="1.0" encoding="UTF-8"?>
D)<?xml version="1.0" encoding="UTF-8"?>
二、填空题
1.____名称空间__________是解决XML元素多义性和名字冲突问题的方案。
2.XML元素由___开始标记__________、结束标记和两者之间的内容三部分组成。
3.DOM全称为_Document Object Model__,DOM解析采用文档驱动,SAX解析使用__
事件__驱动。
4.SAX解析器是否报告XML声明给事件处理器?_____否______(填“是”或“否”)
5.<?xml version="1.0" encoding="gb2312"?>是__xml声明_________。
6.属性类型设为ID,表明该属性的取值____必须唯一__________________。
三、简答题
1.什么是XML?
2.什么是SAX?简述SAX的工作原理。
3.SAX与DOM在解析器的核心分别是什么,他们的优缺点是什么,分别使用在处理什
么问题!
4.<c:choose>标签根据嵌入的子标签<c:when>决定执行哪个内容。
如果没有一个条件成
立,如果有<c:otherwise>子标签,就执行其中的<c:otherwise>标签体中的内容。
<c:choose>、<c:when> 和<c:otherwise>标签可以用于实现if-else语句的功能。
<c:when>和<c:otherwise>标签只能作为<c:choose>的子标签,不能单独使用;<c:choose>标签体中必须有<c:when>标签,但可以没有<c:otherwise>标签。
如果有<c:otherwise>标签,则<c:when>标签必须在<c:otherwise>之前。
5.如果要实现Tag接口,可以通过扩展TagSupport这个类,来写自己需要的方法,而不
需要把Tag接口中的所有方法实现。
6.用JAXB将XML数据转化为java对象的步骤
7.Tld文件的功能及相应标签处理类的tld文件的配置
四、程序填空题
1.使用DOM解析XML文件代码如下,读程序完成填空。
exam2.xml代码如下:
<?xml version="1.0" encoding="GB2312"?>
<school>
<student ID="s101" sex="女">
<name>李华</name>
<age>12</age>
<score>92</score>
</student>
</school>
exam2.java代码如下:
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
public class ExamTest {
public static void main(String args[]) throws Exception{
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//DOM解析返回文档对象
①_Document__ doc = builder.parse(new File("exam2.xml"));
//获得文档根元素节点
②_Element__ root = doc.getDocumentElement();
//获得根节点下元素标记名为student的所有的元素节点的集合
③_Nodelist_ nl = root.getElementsByTagName("student");
for (int i = 0; i < nl. getLength(); i++) {
//获取nl集合中的第i个节点对象
Element stu = (Element)nl.item(i);
//获得元素student属性的集合
④_NamedNodeMap__ map = book.getAttributes();
//循环输出map中所有的属性
for (int k = 0; k < map.getLength(); k++) {
⑤_Attr_ attrNode = (⑤_Attr_)map.item(k);
System.out.print(attrNode.getName() + "="
+ attrNode.getValue() + " ");
}
//获得student标记下所有子节点集合
NodeList eNl = stu.getChildNodes();
//遍历所有子节点
for (int j = 0; j < eNl.getLength(); j++) {
⑥_Nodelis t_ child = eNl.item(j);
if (child.getNodeType() == child.ELEMENT_NODE) {
Element eNode = (Element)child;
}
if (child.getNodeType() == child.TEXT_NODE) {
⑦_Text__ tNode = (⑦_Text_)child;
}} }}}
2.例如jsp中要求取出request中保存的一个属性username,以前习惯的方式:<%
String username=(String)request.getAttribute("user");
out.println(username);
%>
或者
<%
String username=(String)request.getAttribute("user");
%>
<%=user%>
在使用jstl后,则可以直接书写为:
<c:out value="${user}"/>(或者直接${user}) 或${param.[ " user " ]}。